mcp-server-tripit 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -74,7 +74,6 @@ fnox x -- npx -y mcp-server-tripit
74
74
 
75
75
  Built on top of [`dvcrn/tripit-cli`](https://github.com/dvcrn/tripit-cli), this MCP server exposes the TripIt API for common travel workflows, including:
76
76
 
77
- - authenticating with TripIt
78
77
  - listing and fetching trips
79
78
  - creating, updating, and deleting trips
80
79
  - managing hotel reservations
package/dist/index.js CHANGED
@@ -723,20 +723,6 @@ function registerTransportTools(server) {
723
723
  // src/tools/trips.ts
724
724
  import * as z6 from "zod/v4";
725
725
  function registerTripTools(server) {
726
- server.registerTool(
727
- "tripit_login",
728
- {
729
- title: "TripIt Login",
730
- description: "Authenticate with TripIt and confirm that credentials are valid."
731
- },
732
- async () => {
733
- const client = await createAuthenticatedTripItClient();
734
- return jsonResult({
735
- message: "Authenticated successfully. Token cached.",
736
- accessTokenAvailable: Boolean(client.getAccessToken())
737
- });
738
- }
739
- );
740
726
  server.registerTool(
741
727
  "tripit_trips_list",
742
728
  {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/tools/activities.ts","../src/client.ts","../src/results.ts","../src/tools/documents.ts","../src/tools/common.ts","../src/tools/flights.ts","../src/tools/hotels.ts","../src/tools/transport.ts","../src/tools/trips.ts"],"sourcesContent":["import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { registerActivityTools } from \"./tools/activities\";\nimport { registerDocumentTools } from \"./tools/documents\";\nimport { registerFlightTools } from \"./tools/flights\";\nimport { registerHotelTools } from \"./tools/hotels\";\nimport { registerTransportTools } from \"./tools/transport\";\nimport { registerTripTools } from \"./tools/trips\";\n\nfunction createServer(): McpServer {\n const server = new McpServer({\n name: \"tripit\",\n version: \"0.1.0\",\n });\n\n registerTripTools(server);\n registerHotelTools(server);\n registerFlightTools(server);\n registerTransportTools(server);\n registerActivityTools(server);\n registerDocumentTools(server);\n\n return server;\n}\n\nasync function main(): Promise<void> {\n const server = createServer();\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((error) => {\n console.error(\"Failed to start TripIt MCP server:\", error);\n process.exit(1);\n});\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\n\nexport function registerActivityTools(server: McpServer): void {\n server.registerTool(\n \"tripit_activities_get\",\n {\n title: \"TripIt Activities Get\",\n description: \"Get an activity by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Activity ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getActivity(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_activities_create\",\n {\n title: \"TripIt Activities Create\",\n description: \"Add an activity to a trip.\",\n inputSchema: {\n trip: z.string().min(1).describe(\"Trip UUID or Trip ID.\"),\n name: z.string().min(1).describe(\"Activity name.\"),\n startDate: z.string().min(1).describe(\"Start date in YYYY-MM-DD format.\"),\n startTime: z.string().min(1).describe(\"Start time in HH:MM format.\"),\n endDate: z.string().min(1).describe(\"End date in YYYY-MM-DD format.\"),\n endTime: z.string().min(1).describe(\"End time in HH:MM format.\"),\n timezone: z.string().min(1).describe(\"Timezone.\"),\n address: z.string().min(1).describe(\"Street address.\"),\n locationName: z.string().min(1).describe(\"Location or venue name.\"),\n city: z.string().optional().describe(\"City.\"),\n state: z.string().optional().describe(\"State or province.\"),\n zip: z.string().optional().describe(\"Postal code.\"),\n country: z.string().optional().describe(\"Country code.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.createActivity({\n tripId: args.trip,\n displayName: args.name,\n startDate: args.startDate,\n startTime: args.startTime,\n endDate: args.endDate,\n endTime: args.endTime,\n timezone: args.timezone,\n address: args.address,\n locationName: args.locationName,\n city: args.city,\n state: args.state,\n zip: args.zip,\n country: args.country,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_activities_update\",\n {\n title: \"TripIt Activities Update\",\n description: \"Update an existing activity.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Activity ID or UUID.\"),\n trip: z.string().optional().describe(\"Trip UUID or Trip ID.\"),\n name: z.string().optional().describe(\"Activity name.\"),\n startDate: z.string().optional().describe(\"Start date in YYYY-MM-DD format.\"),\n startTime: z.string().optional().describe(\"Start time in HH:MM format.\"),\n endDate: z.string().optional().describe(\"End date in YYYY-MM-DD format.\"),\n endTime: z.string().optional().describe(\"End time in HH:MM format.\"),\n timezone: z.string().optional().describe(\"Timezone.\"),\n address: z.string().optional().describe(\"Street address.\"),\n locationName: z.string().optional().describe(\"Location or venue name.\"),\n city: z.string().optional().describe(\"City.\"),\n state: z.string().optional().describe(\"State or province.\"),\n zip: z.string().optional().describe(\"Postal code.\"),\n country: z.string().optional().describe(\"Country code.\"),\n notes: z.string().optional().describe(\"Activity notes.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateActivity({\n id: args.id,\n tripId: args.trip,\n displayName: args.name,\n startDate: args.startDate,\n startTime: args.startTime,\n endDate: args.endDate,\n endTime: args.endTime,\n timezone: args.timezone,\n address: args.address,\n locationName: args.locationName,\n city: args.city,\n state: args.state,\n zip: args.zip,\n country: args.country,\n notes: args.notes,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_activities_delete\",\n {\n title: \"TripIt Activities Delete\",\n description: \"Delete an activity by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Activity ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteActivity(id))) as Record<string, unknown>),\n );\n}\n","type TripItClient = {\n authenticate(): Promise<string>;\n getAccessToken(): string;\n listTrips(pageSize?: number, pageNum?: number, past?: boolean): Promise<unknown>;\n getTrip(id: string): Promise<unknown>;\n createTrip(params: {\n displayName: string;\n startDate: string;\n endDate: string;\n primaryLocation?: string;\n }): Promise<unknown>;\n updateTrip(params: {\n id: string;\n displayName?: string;\n startDate?: string;\n endDate?: string;\n primaryLocation?: string;\n description?: string;\n }): Promise<unknown>;\n deleteTrip(id: string): Promise<unknown>;\n getHotel(id: string): Promise<unknown>;\n createHotel(params: Record<string, unknown>): Promise<unknown>;\n updateHotel(params: Record<string, unknown>): Promise<unknown>;\n deleteHotel(id: string): Promise<unknown>;\n getFlight(id: string): Promise<unknown>;\n createFlight(params: Record<string, unknown>): Promise<unknown>;\n updateFlight(params: Record<string, unknown>): Promise<unknown>;\n deleteFlight(id: string): Promise<unknown>;\n getTransport(id: string): Promise<unknown>;\n createTransport(params: Record<string, unknown>): Promise<unknown>;\n updateTransport(params: Record<string, unknown>): Promise<unknown>;\n deleteTransport(id: string): Promise<unknown>;\n getActivity(id: string): Promise<unknown>;\n createActivity(params: Record<string, unknown>): Promise<unknown>;\n updateActivity(params: Record<string, unknown>): Promise<unknown>;\n deleteActivity(id: string): Promise<unknown>;\n attachDocument(params: Record<string, unknown>): Promise<unknown>;\n removeDocument(params: Record<string, unknown>): Promise<unknown>;\n};\n\ntype TripItConstructor = new (config: {\n clientId?: string;\n username: string;\n password: string;\n}) => TripItClient;\n\nasync function loadTripItConstructor(): Promise<TripItConstructor> {\n const module = (await import(\"tripit\")) as unknown as {\n TripIt?: TripItConstructor;\n default?: TripItConstructor;\n };\n\n const TripIt = module.TripIt ?? module.default;\n if (!TripIt) {\n throw new Error(\"Could not load the TripIt client constructor from the tripit package.\");\n }\n\n return TripIt;\n}\n\nfunction requiredEnv(name: string): string {\n const value = process.env[name];\n if (!value) {\n throw new Error(`Missing required environment variable: ${name}`);\n }\n\n return value;\n}\n\nfunction optionalEnv(name: string): string | undefined {\n const value = process.env[name]?.trim();\n return value ? value : undefined;\n}\n\nexport async function createAuthenticatedTripItClient(): Promise<TripItClient> {\n const TripIt = await loadTripItConstructor();\n const client = new TripIt({\n username: requiredEnv(\"TRIPIT_USERNAME\"),\n password: requiredEnv(\"TRIPIT_PASSWORD\"),\n clientId: optionalEnv(\"TRIPIT_CLIENT_ID\"),\n });\n\n await client.authenticate();\n return client;\n}\n\nexport async function withTripIt<T>(callback: (client: TripItClient) => Promise<T>): Promise<T> {\n const client = await createAuthenticatedTripItClient();\n return callback(client);\n}\n","import type { CallToolResult } from \"@modelcontextprotocol/sdk/types.js\";\n\nexport function jsonResult(data: Record<string, unknown>): CallToolResult {\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify(data, null, 2),\n },\n ],\n structuredContent: data,\n };\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\nimport { requireExactlyOneSelector } from \"./common\";\n\nconst objectTypeSchema = z.enum([\"lodging\", \"activity\", \"air\", \"transport\"]);\n\nexport function registerDocumentTools(server: McpServer): void {\n server.registerTool(\n \"tripit_documents_attach\",\n {\n title: \"TripIt Documents Attach\",\n description: \"Attach a document to a TripIt object. Type can be omitted and will be auto-detected.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Object UUID to attach to.\"),\n type: objectTypeSchema.optional().describe(\"TripIt object type. Optional; auto-detected when omitted.\"),\n file: z.string().min(1).describe(\"Path to a local image or PDF file.\"),\n caption: z.string().optional().describe(\"Optional caption for the attached document.\"),\n mimeType: z.string().optional().describe(\"Optional MIME type override.\"),\n },\n },\n async ({ id, type, file, caption, mimeType }) =>\n jsonResult(\n (await withTripIt((client) =>\n client.attachDocument({\n objectType: type,\n objectId: id,\n filePath: file,\n caption,\n mimeType,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_documents_remove\",\n {\n title: \"TripIt Documents Remove\",\n description: \"Remove a document from a TripIt object. Type can be omitted and will be auto-detected.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Object UUID to remove the document from.\"),\n type: objectTypeSchema.optional().describe(\"TripIt object type. Optional; auto-detected when omitted.\"),\n imageUuid: z.string().optional().describe(\"UUID of the image to remove.\"),\n imageUrl: z.string().optional().describe(\"URL of the image to remove.\"),\n caption: z.string().optional().describe(\"Caption of the image to remove.\"),\n index: z.number().int().positive().optional().describe(\"1-based image index to remove.\"),\n all: z.boolean().optional().describe(\"When true, remove all documents.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id, type, imageUuid, imageUrl, caption, index, all }) => {\n requireExactlyOneSelector(\n [Boolean(imageUuid), Boolean(imageUrl), Boolean(caption), index !== undefined, Boolean(all)],\n \"Provide exactly one selector: imageUuid, imageUrl, caption, index, or all.\",\n );\n\n return jsonResult(\n (await withTripIt((client) =>\n client.removeDocument({\n objectType: type,\n objectId: id,\n imageUuid,\n imageUrl,\n caption,\n index,\n removeAll: all,\n }),\n )) as Record<string, unknown>,\n );\n },\n );\n}\n","export function requireExactlyOneSelector(selectors: Array<boolean>, message: string): void {\n const count = selectors.filter(Boolean).length;\n if (count !== 1) {\n throw new Error(message);\n }\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\n\nexport function registerFlightTools(server: McpServer): void {\n server.registerTool(\n \"tripit_flights_get\",\n {\n title: \"TripIt Flights Get\",\n description: \"Get a flight by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Flight ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getFlight(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_flights_create\",\n {\n title: \"TripIt Flights Create\",\n description: \"Add a flight to a trip.\",\n inputSchema: {\n trip: z.string().min(1).describe(\"Trip UUID.\"),\n name: z.string().min(1).describe(\"Display name.\"),\n airline: z.string().min(1).describe(\"Airline name.\"),\n from: z.string().min(1).describe(\"Departure city.\"),\n fromCode: z.string().min(1).describe(\"Departure country code.\"),\n to: z.string().min(1).describe(\"Arrival city.\"),\n toCode: z.string().min(1).describe(\"Arrival country code.\"),\n airlineCode: z.string().min(1).describe(\"Airline code such as NH or JL.\"),\n flightNum: z.string().min(1).describe(\"Flight number.\"),\n departDate: z.string().min(1).describe(\"Departure date in YYYY-MM-DD format.\"),\n departTime: z.string().min(1).describe(\"Departure time in HH:MM format.\"),\n departTz: z.string().min(1).describe(\"Departure timezone.\"),\n arriveDate: z.string().min(1).describe(\"Arrival date in YYYY-MM-DD format.\"),\n arriveTime: z.string().min(1).describe(\"Arrival time in HH:MM format.\"),\n arriveTz: z.string().min(1).describe(\"Arrival timezone.\"),\n aircraft: z.string().optional().describe(\"Aircraft type.\"),\n serviceClass: z.string().optional().describe(\"Service class.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n notes: z.string().optional().describe(\"Flight notes.\"),\n cost: z.string().optional().describe(\"Total cost.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.createFlight({\n tripId: args.trip,\n displayName: args.name,\n supplierName: args.airline,\n supplierConfNum: args.confirmation,\n notes: args.notes,\n totalCost: args.cost,\n segments: [\n {\n startDate: args.departDate,\n startTime: args.departTime,\n startTimezone: args.departTz,\n endDate: args.arriveDate,\n endTime: args.arriveTime,\n endTimezone: args.arriveTz,\n startCityName: args.from,\n startCountryCode: args.fromCode,\n endCityName: args.to,\n endCountryCode: args.toCode,\n marketingAirline: args.airlineCode,\n marketingFlightNumber: args.flightNum,\n aircraft: args.aircraft,\n serviceClass: args.serviceClass,\n },\n ],\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_flights_update\",\n {\n title: \"TripIt Flights Update\",\n description: \"Update an existing flight.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Flight ID or UUID.\"),\n trip: z.string().optional().describe(\"Trip UUID.\"),\n name: z.string().optional().describe(\"Display name.\"),\n airline: z.string().optional().describe(\"Airline name.\"),\n from: z.string().optional().describe(\"Departure city.\"),\n fromCode: z.string().optional().describe(\"Departure country code.\"),\n to: z.string().optional().describe(\"Arrival city.\"),\n toCode: z.string().optional().describe(\"Arrival country code.\"),\n airlineCode: z.string().optional().describe(\"Airline code such as NH or JL.\"),\n flightNum: z.string().optional().describe(\"Flight number.\"),\n departDate: z.string().optional().describe(\"Departure date in YYYY-MM-DD format.\"),\n departTime: z.string().optional().describe(\"Departure time in HH:MM format.\"),\n departTz: z.string().optional().describe(\"Departure timezone.\"),\n arriveDate: z.string().optional().describe(\"Arrival date in YYYY-MM-DD format.\"),\n arriveTime: z.string().optional().describe(\"Arrival time in HH:MM format.\"),\n arriveTz: z.string().optional().describe(\"Arrival timezone.\"),\n aircraft: z.string().optional().describe(\"Aircraft type.\"),\n serviceClass: z.string().optional().describe(\"Service class.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n notes: z.string().optional().describe(\"Flight notes.\"),\n cost: z.string().optional().describe(\"Total cost.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateFlight({\n id: args.id,\n tripId: args.trip,\n displayName: args.name,\n supplierName: args.airline,\n supplierConfNum: args.confirmation,\n notes: args.notes,\n totalCost: args.cost,\n segment: {\n startDate: args.departDate,\n startTime: args.departTime,\n startTimezone: args.departTz,\n endDate: args.arriveDate,\n endTime: args.arriveTime,\n endTimezone: args.arriveTz,\n startCityName: args.from,\n startCountryCode: args.fromCode,\n endCityName: args.to,\n endCountryCode: args.toCode,\n marketingAirline: args.airlineCode,\n marketingFlightNumber: args.flightNum,\n aircraft: args.aircraft,\n serviceClass: args.serviceClass,\n },\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_flights_delete\",\n {\n title: \"TripIt Flights Delete\",\n description: \"Delete a flight by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Flight ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteFlight(id))) as Record<string, unknown>),\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\nimport { requireExactlyOneSelector } from \"./common\";\n\nexport function registerHotelTools(server: McpServer): void {\n server.registerTool(\n \"tripit_hotels_get\",\n {\n title: \"TripIt Hotels Get\",\n description: \"Get a hotel reservation by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getHotel(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_hotels_create\",\n {\n title: \"TripIt Hotels Create\",\n description: \"Add a hotel booking to a trip.\",\n inputSchema: {\n trip: z.string().min(1).describe(\"Trip UUID or Trip ID.\"),\n name: z.string().min(1).describe(\"Hotel name.\"),\n checkin: z.string().min(1).describe(\"Check-in date in YYYY-MM-DD format.\"),\n checkout: z.string().min(1).describe(\"Check-out date in YYYY-MM-DD format.\"),\n checkinTime: z.string().optional().describe(\"Check-in time in HH:MM format. Defaults to 15:00.\"),\n checkoutTime: z.string().optional().describe(\"Check-out time in HH:MM format. Defaults to 11:00.\"),\n timezone: z.string().optional().describe(\"Timezone. Defaults to UTC.\"),\n address: z.string().min(1).describe(\"Street address.\"),\n city: z.string().min(1).describe(\"City.\"),\n country: z.string().min(1).describe(\"Country code such as JP or US.\"),\n state: z.string().optional().describe(\"State or province.\"),\n zip: z.string().optional().describe(\"Postal code.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n rate: z.string().optional().describe(\"Booking rate.\"),\n notes: z.string().optional().describe(\"Notes for the booking.\"),\n cost: z.string().optional().describe(\"Total cost.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.createHotel({\n tripId: args.trip,\n hotelName: args.name,\n checkInDate: args.checkin,\n checkInTime: args.checkinTime ?? \"15:00\",\n checkOutDate: args.checkout,\n checkOutTime: args.checkoutTime ?? \"11:00\",\n timezone: args.timezone ?? \"UTC\",\n street: args.address,\n city: args.city,\n country: args.country,\n state: args.state,\n zip: args.zip,\n supplierConfNum: args.confirmation,\n bookingRate: args.rate,\n notes: args.notes,\n totalCost: args.cost,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_hotels_update\",\n {\n title: \"TripIt Hotels Update\",\n description: \"Update an existing hotel reservation.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n trip: z.string().optional().describe(\"Trip UUID or Trip ID.\"),\n name: z.string().optional().describe(\"Hotel name.\"),\n checkin: z.string().optional().describe(\"Check-in date in YYYY-MM-DD format.\"),\n checkout: z.string().optional().describe(\"Check-out date in YYYY-MM-DD format.\"),\n checkinTime: z.string().optional().describe(\"Check-in time in HH:MM format.\"),\n checkoutTime: z.string().optional().describe(\"Check-out time in HH:MM format.\"),\n timezone: z.string().optional().describe(\"Timezone.\"),\n address: z.string().optional().describe(\"Street address.\"),\n city: z.string().optional().describe(\"City.\"),\n country: z.string().optional().describe(\"Country code such as JP or US.\"),\n state: z.string().optional().describe(\"State or province.\"),\n zip: z.string().optional().describe(\"Postal code.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n rate: z.string().optional().describe(\"Booking rate.\"),\n notes: z.string().optional().describe(\"Notes for the booking.\"),\n cost: z.string().optional().describe(\"Total cost.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateHotel({\n id: args.id,\n tripId: args.trip,\n hotelName: args.name,\n checkInDate: args.checkin,\n checkInTime: args.checkinTime,\n checkOutDate: args.checkout,\n checkOutTime: args.checkoutTime,\n timezone: args.timezone,\n street: args.address,\n city: args.city,\n country: args.country,\n state: args.state,\n zip: args.zip,\n supplierConfNum: args.confirmation,\n bookingRate: args.rate,\n notes: args.notes,\n totalCost: args.cost,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_hotels_delete\",\n {\n title: \"TripIt Hotels Delete\",\n description: \"Delete a hotel reservation by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteHotel(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_hotels_attach_document\",\n {\n title: \"TripIt Hotels Attach Document\",\n description: \"Attach an image or PDF document to a hotel reservation.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n file: z.string().min(1).describe(\"Path to the file on the local filesystem.\"),\n name: z.string().optional().describe(\"Document caption or name.\"),\n mimeType: z.string().optional().describe(\"Optional MIME type override.\"),\n },\n },\n async ({ id, file, name, mimeType }) =>\n jsonResult(\n (await withTripIt((client) =>\n client.attachDocument({\n objectType: \"lodging\",\n objectId: id,\n filePath: file,\n caption: name,\n mimeType,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_hotels_remove_document\",\n {\n title: \"TripIt Hotels Remove Document\",\n description: \"Remove a document from a hotel reservation.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n uuid: z.string().optional().describe(\"Attachment UUID to remove.\"),\n imageUuid: z.string().optional().describe(\"Deprecated alias for uuid.\"),\n url: z.string().optional().describe(\"Document URL to remove.\"),\n caption: z.string().optional().describe(\"Remove the first document with this caption.\"),\n index: z.number().int().positive().optional().describe(\"1-based document index to remove.\"),\n all: z.boolean().optional().describe(\"When true, remove all documents.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id, uuid, imageUuid, url, caption, index, all }) => {\n const resolvedUuid = uuid ?? imageUuid;\n requireExactlyOneSelector(\n [Boolean(resolvedUuid), Boolean(url), Boolean(caption), index !== undefined, Boolean(all)],\n \"Provide exactly one selector: uuid, imageUuid, url, caption, index, or all.\",\n );\n\n return jsonResult(\n (await withTripIt((client) =>\n client.removeDocument({\n objectType: \"lodging\",\n objectId: id,\n imageUuid: resolvedUuid,\n imageUrl: url,\n caption,\n index,\n removeAll: all,\n }),\n )) as Record<string, unknown>,\n );\n },\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\n\nexport function registerTransportTools(server: McpServer): void {\n server.registerTool(\n \"tripit_transport_get\",\n {\n title: \"TripIt Transport Get\",\n description: \"Get a transport item by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Transport ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getTransport(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_transport_create\",\n {\n title: \"TripIt Transport Create\",\n description: \"Add a transport segment to a trip.\",\n inputSchema: {\n trip: z.string().min(1).describe(\"Trip UUID or Trip ID.\"),\n from: z.string().min(1).describe(\"Start address.\"),\n to: z.string().min(1).describe(\"End address.\"),\n departDate: z.string().min(1).describe(\"Departure date in YYYY-MM-DD format.\"),\n departTime: z.string().min(1).describe(\"Departure time in HH:MM format.\"),\n arriveDate: z.string().min(1).describe(\"Arrival date in YYYY-MM-DD format.\"),\n arriveTime: z.string().min(1).describe(\"Arrival time in HH:MM format.\"),\n timezone: z.string().min(1).describe(\"Timezone.\"),\n fromName: z.string().optional().describe(\"Start location name.\"),\n toName: z.string().optional().describe(\"End location name.\"),\n name: z.string().optional().describe(\"Display name.\"),\n vehicle: z.string().optional().describe(\"Vehicle description.\"),\n carrier: z.string().optional().describe(\"Carrier name.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.createTransport({\n tripId: args.trip,\n startAddress: args.from,\n endAddress: args.to,\n startDate: args.departDate,\n startTime: args.departTime,\n endDate: args.arriveDate,\n endTime: args.arriveTime,\n timezone: args.timezone,\n startLocationName: args.fromName,\n endLocationName: args.toName,\n displayName: args.name,\n vehicleDescription: args.vehicle,\n carrierName: args.carrier,\n confirmationNum: args.confirmation,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_transport_update\",\n {\n title: \"TripIt Transport Update\",\n description: \"Update an existing transport item.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Transport ID or UUID.\"),\n trip: z.string().optional().describe(\"Trip UUID or Trip ID.\"),\n from: z.string().optional().describe(\"Start address.\"),\n to: z.string().optional().describe(\"End address.\"),\n departDate: z.string().optional().describe(\"Departure date in YYYY-MM-DD format.\"),\n departTime: z.string().optional().describe(\"Departure time in HH:MM format.\"),\n arriveDate: z.string().optional().describe(\"Arrival date in YYYY-MM-DD format.\"),\n arriveTime: z.string().optional().describe(\"Arrival time in HH:MM format.\"),\n timezone: z.string().optional().describe(\"Timezone.\"),\n fromName: z.string().optional().describe(\"Start location name.\"),\n toName: z.string().optional().describe(\"End location name.\"),\n name: z.string().optional().describe(\"Display name.\"),\n vehicle: z.string().optional().describe(\"Vehicle description.\"),\n carrier: z.string().optional().describe(\"Carrier name.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateTransport({\n id: args.id,\n tripId: args.trip,\n startAddress: args.from,\n endAddress: args.to,\n startDate: args.departDate,\n startTime: args.departTime,\n endDate: args.arriveDate,\n endTime: args.arriveTime,\n timezone: args.timezone,\n startLocationName: args.fromName,\n endLocationName: args.toName,\n displayName: args.name,\n vehicleDescription: args.vehicle,\n carrierName: args.carrier,\n confirmationNum: args.confirmation,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_transport_delete\",\n {\n title: \"TripIt Transport Delete\",\n description: \"Delete a transport item by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Transport ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteTransport(id))) as Record<string, unknown>),\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { createAuthenticatedTripItClient, withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\n\nexport function registerTripTools(server: McpServer): void {\n server.registerTool(\n \"tripit_login\",\n {\n title: \"TripIt Login\",\n description: \"Authenticate with TripIt and confirm that credentials are valid.\",\n },\n async () => {\n const client = await createAuthenticatedTripItClient();\n return jsonResult({\n message: \"Authenticated successfully. Token cached.\",\n accessTokenAvailable: Boolean(client.getAccessToken()),\n });\n },\n );\n\n server.registerTool(\n \"tripit_trips_list\",\n {\n title: \"TripIt Trips List\",\n description: \"List trips in the authenticated TripIt account.\",\n inputSchema: {\n pageSize: z.number().int().positive().optional().describe(\"Number of trips to return. Defaults to 100.\"),\n pageNum: z.number().int().positive().optional().describe(\"Page number to fetch. Defaults to 1.\"),\n past: z.boolean().optional().describe(\"When true, list past trips instead of current/future trips.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ pageSize, pageNum, past }) =>\n jsonResult(\n (await withTripIt((client) => client.listTrips(pageSize ?? 100, pageNum ?? 1, past ?? false))) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_trips_get\",\n {\n title: \"TripIt Trips Get\",\n description: \"Get a trip by TripIt ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Trip ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getTrip(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_trips_create\",\n {\n title: \"TripIt Trips Create\",\n description: \"Create a new trip.\",\n inputSchema: {\n name: z.string().min(1).describe(\"Trip display name.\"),\n start: z.string().optional().describe(\"Start date in YYYY-MM-DD format. Defaults to today.\"),\n end: z.string().optional().describe(\"End date in YYYY-MM-DD format. Defaults to start date or today.\"),\n location: z.string().optional().describe(\"Primary location for the trip.\"),\n },\n },\n async ({ name, start, end, location }) => {\n const today = new Date().toISOString().slice(0, 10);\n return jsonResult(\n (await withTripIt((client) =>\n client.createTrip({\n displayName: name,\n startDate: start ?? today,\n endDate: end ?? start ?? today,\n primaryLocation: location,\n }),\n )) as Record<string, unknown>,\n );\n },\n );\n\n server.registerTool(\n \"tripit_trips_update\",\n {\n title: \"TripIt Trips Update\",\n description: \"Update an existing trip.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Trip ID or UUID.\"),\n name: z.string().optional().describe(\"New trip display name.\"),\n start: z.string().optional().describe(\"Updated start date in YYYY-MM-DD format.\"),\n end: z.string().optional().describe(\"Updated end date in YYYY-MM-DD format.\"),\n location: z.string().optional().describe(\"Updated primary location.\"),\n description: z.string().optional().describe(\"Trip description.\"),\n },\n },\n async ({ id, name, start, end, location, description }) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateTrip({\n id,\n displayName: name,\n startDate: start,\n endDate: end,\n primaryLocation: location,\n description,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_trips_delete\",\n {\n title: \"TripIt Trips Delete\",\n description: \"Delete a trip by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Trip ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteTrip(id))) as Record<string, unknown>),\n );\n}\n"],"mappings":"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","names":["z","z","z","z","z"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/tools/activities.ts","../src/client.ts","../src/results.ts","../src/tools/documents.ts","../src/tools/common.ts","../src/tools/flights.ts","../src/tools/hotels.ts","../src/tools/transport.ts","../src/tools/trips.ts"],"sourcesContent":["import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { registerActivityTools } from \"./tools/activities\";\nimport { registerDocumentTools } from \"./tools/documents\";\nimport { registerFlightTools } from \"./tools/flights\";\nimport { registerHotelTools } from \"./tools/hotels\";\nimport { registerTransportTools } from \"./tools/transport\";\nimport { registerTripTools } from \"./tools/trips\";\n\nfunction createServer(): McpServer {\n const server = new McpServer({\n name: \"tripit\",\n version: \"0.1.0\",\n });\n\n registerTripTools(server);\n registerHotelTools(server);\n registerFlightTools(server);\n registerTransportTools(server);\n registerActivityTools(server);\n registerDocumentTools(server);\n\n return server;\n}\n\nasync function main(): Promise<void> {\n const server = createServer();\n const transport = new StdioServerTransport();\n await server.connect(transport);\n}\n\nmain().catch((error) => {\n console.error(\"Failed to start TripIt MCP server:\", error);\n process.exit(1);\n});\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\n\nexport function registerActivityTools(server: McpServer): void {\n server.registerTool(\n \"tripit_activities_get\",\n {\n title: \"TripIt Activities Get\",\n description: \"Get an activity by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Activity ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getActivity(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_activities_create\",\n {\n title: \"TripIt Activities Create\",\n description: \"Add an activity to a trip.\",\n inputSchema: {\n trip: z.string().min(1).describe(\"Trip UUID or Trip ID.\"),\n name: z.string().min(1).describe(\"Activity name.\"),\n startDate: z.string().min(1).describe(\"Start date in YYYY-MM-DD format.\"),\n startTime: z.string().min(1).describe(\"Start time in HH:MM format.\"),\n endDate: z.string().min(1).describe(\"End date in YYYY-MM-DD format.\"),\n endTime: z.string().min(1).describe(\"End time in HH:MM format.\"),\n timezone: z.string().min(1).describe(\"Timezone.\"),\n address: z.string().min(1).describe(\"Street address.\"),\n locationName: z.string().min(1).describe(\"Location or venue name.\"),\n city: z.string().optional().describe(\"City.\"),\n state: z.string().optional().describe(\"State or province.\"),\n zip: z.string().optional().describe(\"Postal code.\"),\n country: z.string().optional().describe(\"Country code.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.createActivity({\n tripId: args.trip,\n displayName: args.name,\n startDate: args.startDate,\n startTime: args.startTime,\n endDate: args.endDate,\n endTime: args.endTime,\n timezone: args.timezone,\n address: args.address,\n locationName: args.locationName,\n city: args.city,\n state: args.state,\n zip: args.zip,\n country: args.country,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_activities_update\",\n {\n title: \"TripIt Activities Update\",\n description: \"Update an existing activity.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Activity ID or UUID.\"),\n trip: z.string().optional().describe(\"Trip UUID or Trip ID.\"),\n name: z.string().optional().describe(\"Activity name.\"),\n startDate: z.string().optional().describe(\"Start date in YYYY-MM-DD format.\"),\n startTime: z.string().optional().describe(\"Start time in HH:MM format.\"),\n endDate: z.string().optional().describe(\"End date in YYYY-MM-DD format.\"),\n endTime: z.string().optional().describe(\"End time in HH:MM format.\"),\n timezone: z.string().optional().describe(\"Timezone.\"),\n address: z.string().optional().describe(\"Street address.\"),\n locationName: z.string().optional().describe(\"Location or venue name.\"),\n city: z.string().optional().describe(\"City.\"),\n state: z.string().optional().describe(\"State or province.\"),\n zip: z.string().optional().describe(\"Postal code.\"),\n country: z.string().optional().describe(\"Country code.\"),\n notes: z.string().optional().describe(\"Activity notes.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateActivity({\n id: args.id,\n tripId: args.trip,\n displayName: args.name,\n startDate: args.startDate,\n startTime: args.startTime,\n endDate: args.endDate,\n endTime: args.endTime,\n timezone: args.timezone,\n address: args.address,\n locationName: args.locationName,\n city: args.city,\n state: args.state,\n zip: args.zip,\n country: args.country,\n notes: args.notes,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_activities_delete\",\n {\n title: \"TripIt Activities Delete\",\n description: \"Delete an activity by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Activity ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteActivity(id))) as Record<string, unknown>),\n );\n}\n","type TripItClient = {\n authenticate(): Promise<string>;\n getAccessToken(): string;\n listTrips(pageSize?: number, pageNum?: number, past?: boolean): Promise<unknown>;\n getTrip(id: string): Promise<unknown>;\n createTrip(params: {\n displayName: string;\n startDate: string;\n endDate: string;\n primaryLocation?: string;\n }): Promise<unknown>;\n updateTrip(params: {\n id: string;\n displayName?: string;\n startDate?: string;\n endDate?: string;\n primaryLocation?: string;\n description?: string;\n }): Promise<unknown>;\n deleteTrip(id: string): Promise<unknown>;\n getHotel(id: string): Promise<unknown>;\n createHotel(params: Record<string, unknown>): Promise<unknown>;\n updateHotel(params: Record<string, unknown>): Promise<unknown>;\n deleteHotel(id: string): Promise<unknown>;\n getFlight(id: string): Promise<unknown>;\n createFlight(params: Record<string, unknown>): Promise<unknown>;\n updateFlight(params: Record<string, unknown>): Promise<unknown>;\n deleteFlight(id: string): Promise<unknown>;\n getTransport(id: string): Promise<unknown>;\n createTransport(params: Record<string, unknown>): Promise<unknown>;\n updateTransport(params: Record<string, unknown>): Promise<unknown>;\n deleteTransport(id: string): Promise<unknown>;\n getActivity(id: string): Promise<unknown>;\n createActivity(params: Record<string, unknown>): Promise<unknown>;\n updateActivity(params: Record<string, unknown>): Promise<unknown>;\n deleteActivity(id: string): Promise<unknown>;\n attachDocument(params: Record<string, unknown>): Promise<unknown>;\n removeDocument(params: Record<string, unknown>): Promise<unknown>;\n};\n\ntype TripItConstructor = new (config: {\n clientId?: string;\n username: string;\n password: string;\n}) => TripItClient;\n\nasync function loadTripItConstructor(): Promise<TripItConstructor> {\n const module = (await import(\"tripit\")) as unknown as {\n TripIt?: TripItConstructor;\n default?: TripItConstructor;\n };\n\n const TripIt = module.TripIt ?? module.default;\n if (!TripIt) {\n throw new Error(\"Could not load the TripIt client constructor from the tripit package.\");\n }\n\n return TripIt;\n}\n\nfunction requiredEnv(name: string): string {\n const value = process.env[name];\n if (!value) {\n throw new Error(`Missing required environment variable: ${name}`);\n }\n\n return value;\n}\n\nfunction optionalEnv(name: string): string | undefined {\n const value = process.env[name]?.trim();\n return value ? value : undefined;\n}\n\nexport async function createAuthenticatedTripItClient(): Promise<TripItClient> {\n const TripIt = await loadTripItConstructor();\n const client = new TripIt({\n username: requiredEnv(\"TRIPIT_USERNAME\"),\n password: requiredEnv(\"TRIPIT_PASSWORD\"),\n clientId: optionalEnv(\"TRIPIT_CLIENT_ID\"),\n });\n\n await client.authenticate();\n return client;\n}\n\nexport async function withTripIt<T>(callback: (client: TripItClient) => Promise<T>): Promise<T> {\n const client = await createAuthenticatedTripItClient();\n return callback(client);\n}\n","import type { CallToolResult } from \"@modelcontextprotocol/sdk/types.js\";\n\nexport function jsonResult(data: Record<string, unknown>): CallToolResult {\n return {\n content: [\n {\n type: \"text\",\n text: JSON.stringify(data, null, 2),\n },\n ],\n structuredContent: data,\n };\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\nimport { requireExactlyOneSelector } from \"./common\";\n\nconst objectTypeSchema = z.enum([\"lodging\", \"activity\", \"air\", \"transport\"]);\n\nexport function registerDocumentTools(server: McpServer): void {\n server.registerTool(\n \"tripit_documents_attach\",\n {\n title: \"TripIt Documents Attach\",\n description: \"Attach a document to a TripIt object. Type can be omitted and will be auto-detected.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Object UUID to attach to.\"),\n type: objectTypeSchema.optional().describe(\"TripIt object type. Optional; auto-detected when omitted.\"),\n file: z.string().min(1).describe(\"Path to a local image or PDF file.\"),\n caption: z.string().optional().describe(\"Optional caption for the attached document.\"),\n mimeType: z.string().optional().describe(\"Optional MIME type override.\"),\n },\n },\n async ({ id, type, file, caption, mimeType }) =>\n jsonResult(\n (await withTripIt((client) =>\n client.attachDocument({\n objectType: type,\n objectId: id,\n filePath: file,\n caption,\n mimeType,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_documents_remove\",\n {\n title: \"TripIt Documents Remove\",\n description: \"Remove a document from a TripIt object. Type can be omitted and will be auto-detected.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Object UUID to remove the document from.\"),\n type: objectTypeSchema.optional().describe(\"TripIt object type. Optional; auto-detected when omitted.\"),\n imageUuid: z.string().optional().describe(\"UUID of the image to remove.\"),\n imageUrl: z.string().optional().describe(\"URL of the image to remove.\"),\n caption: z.string().optional().describe(\"Caption of the image to remove.\"),\n index: z.number().int().positive().optional().describe(\"1-based image index to remove.\"),\n all: z.boolean().optional().describe(\"When true, remove all documents.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id, type, imageUuid, imageUrl, caption, index, all }) => {\n requireExactlyOneSelector(\n [Boolean(imageUuid), Boolean(imageUrl), Boolean(caption), index !== undefined, Boolean(all)],\n \"Provide exactly one selector: imageUuid, imageUrl, caption, index, or all.\",\n );\n\n return jsonResult(\n (await withTripIt((client) =>\n client.removeDocument({\n objectType: type,\n objectId: id,\n imageUuid,\n imageUrl,\n caption,\n index,\n removeAll: all,\n }),\n )) as Record<string, unknown>,\n );\n },\n );\n}\n","export function requireExactlyOneSelector(selectors: Array<boolean>, message: string): void {\n const count = selectors.filter(Boolean).length;\n if (count !== 1) {\n throw new Error(message);\n }\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\n\nexport function registerFlightTools(server: McpServer): void {\n server.registerTool(\n \"tripit_flights_get\",\n {\n title: \"TripIt Flights Get\",\n description: \"Get a flight by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Flight ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getFlight(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_flights_create\",\n {\n title: \"TripIt Flights Create\",\n description: \"Add a flight to a trip.\",\n inputSchema: {\n trip: z.string().min(1).describe(\"Trip UUID.\"),\n name: z.string().min(1).describe(\"Display name.\"),\n airline: z.string().min(1).describe(\"Airline name.\"),\n from: z.string().min(1).describe(\"Departure city.\"),\n fromCode: z.string().min(1).describe(\"Departure country code.\"),\n to: z.string().min(1).describe(\"Arrival city.\"),\n toCode: z.string().min(1).describe(\"Arrival country code.\"),\n airlineCode: z.string().min(1).describe(\"Airline code such as NH or JL.\"),\n flightNum: z.string().min(1).describe(\"Flight number.\"),\n departDate: z.string().min(1).describe(\"Departure date in YYYY-MM-DD format.\"),\n departTime: z.string().min(1).describe(\"Departure time in HH:MM format.\"),\n departTz: z.string().min(1).describe(\"Departure timezone.\"),\n arriveDate: z.string().min(1).describe(\"Arrival date in YYYY-MM-DD format.\"),\n arriveTime: z.string().min(1).describe(\"Arrival time in HH:MM format.\"),\n arriveTz: z.string().min(1).describe(\"Arrival timezone.\"),\n aircraft: z.string().optional().describe(\"Aircraft type.\"),\n serviceClass: z.string().optional().describe(\"Service class.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n notes: z.string().optional().describe(\"Flight notes.\"),\n cost: z.string().optional().describe(\"Total cost.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.createFlight({\n tripId: args.trip,\n displayName: args.name,\n supplierName: args.airline,\n supplierConfNum: args.confirmation,\n notes: args.notes,\n totalCost: args.cost,\n segments: [\n {\n startDate: args.departDate,\n startTime: args.departTime,\n startTimezone: args.departTz,\n endDate: args.arriveDate,\n endTime: args.arriveTime,\n endTimezone: args.arriveTz,\n startCityName: args.from,\n startCountryCode: args.fromCode,\n endCityName: args.to,\n endCountryCode: args.toCode,\n marketingAirline: args.airlineCode,\n marketingFlightNumber: args.flightNum,\n aircraft: args.aircraft,\n serviceClass: args.serviceClass,\n },\n ],\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_flights_update\",\n {\n title: \"TripIt Flights Update\",\n description: \"Update an existing flight.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Flight ID or UUID.\"),\n trip: z.string().optional().describe(\"Trip UUID.\"),\n name: z.string().optional().describe(\"Display name.\"),\n airline: z.string().optional().describe(\"Airline name.\"),\n from: z.string().optional().describe(\"Departure city.\"),\n fromCode: z.string().optional().describe(\"Departure country code.\"),\n to: z.string().optional().describe(\"Arrival city.\"),\n toCode: z.string().optional().describe(\"Arrival country code.\"),\n airlineCode: z.string().optional().describe(\"Airline code such as NH or JL.\"),\n flightNum: z.string().optional().describe(\"Flight number.\"),\n departDate: z.string().optional().describe(\"Departure date in YYYY-MM-DD format.\"),\n departTime: z.string().optional().describe(\"Departure time in HH:MM format.\"),\n departTz: z.string().optional().describe(\"Departure timezone.\"),\n arriveDate: z.string().optional().describe(\"Arrival date in YYYY-MM-DD format.\"),\n arriveTime: z.string().optional().describe(\"Arrival time in HH:MM format.\"),\n arriveTz: z.string().optional().describe(\"Arrival timezone.\"),\n aircraft: z.string().optional().describe(\"Aircraft type.\"),\n serviceClass: z.string().optional().describe(\"Service class.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n notes: z.string().optional().describe(\"Flight notes.\"),\n cost: z.string().optional().describe(\"Total cost.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateFlight({\n id: args.id,\n tripId: args.trip,\n displayName: args.name,\n supplierName: args.airline,\n supplierConfNum: args.confirmation,\n notes: args.notes,\n totalCost: args.cost,\n segment: {\n startDate: args.departDate,\n startTime: args.departTime,\n startTimezone: args.departTz,\n endDate: args.arriveDate,\n endTime: args.arriveTime,\n endTimezone: args.arriveTz,\n startCityName: args.from,\n startCountryCode: args.fromCode,\n endCityName: args.to,\n endCountryCode: args.toCode,\n marketingAirline: args.airlineCode,\n marketingFlightNumber: args.flightNum,\n aircraft: args.aircraft,\n serviceClass: args.serviceClass,\n },\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_flights_delete\",\n {\n title: \"TripIt Flights Delete\",\n description: \"Delete a flight by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Flight ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteFlight(id))) as Record<string, unknown>),\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\nimport { requireExactlyOneSelector } from \"./common\";\n\nexport function registerHotelTools(server: McpServer): void {\n server.registerTool(\n \"tripit_hotels_get\",\n {\n title: \"TripIt Hotels Get\",\n description: \"Get a hotel reservation by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getHotel(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_hotels_create\",\n {\n title: \"TripIt Hotels Create\",\n description: \"Add a hotel booking to a trip.\",\n inputSchema: {\n trip: z.string().min(1).describe(\"Trip UUID or Trip ID.\"),\n name: z.string().min(1).describe(\"Hotel name.\"),\n checkin: z.string().min(1).describe(\"Check-in date in YYYY-MM-DD format.\"),\n checkout: z.string().min(1).describe(\"Check-out date in YYYY-MM-DD format.\"),\n checkinTime: z.string().optional().describe(\"Check-in time in HH:MM format. Defaults to 15:00.\"),\n checkoutTime: z.string().optional().describe(\"Check-out time in HH:MM format. Defaults to 11:00.\"),\n timezone: z.string().optional().describe(\"Timezone. Defaults to UTC.\"),\n address: z.string().min(1).describe(\"Street address.\"),\n city: z.string().min(1).describe(\"City.\"),\n country: z.string().min(1).describe(\"Country code such as JP or US.\"),\n state: z.string().optional().describe(\"State or province.\"),\n zip: z.string().optional().describe(\"Postal code.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n rate: z.string().optional().describe(\"Booking rate.\"),\n notes: z.string().optional().describe(\"Notes for the booking.\"),\n cost: z.string().optional().describe(\"Total cost.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.createHotel({\n tripId: args.trip,\n hotelName: args.name,\n checkInDate: args.checkin,\n checkInTime: args.checkinTime ?? \"15:00\",\n checkOutDate: args.checkout,\n checkOutTime: args.checkoutTime ?? \"11:00\",\n timezone: args.timezone ?? \"UTC\",\n street: args.address,\n city: args.city,\n country: args.country,\n state: args.state,\n zip: args.zip,\n supplierConfNum: args.confirmation,\n bookingRate: args.rate,\n notes: args.notes,\n totalCost: args.cost,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_hotels_update\",\n {\n title: \"TripIt Hotels Update\",\n description: \"Update an existing hotel reservation.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n trip: z.string().optional().describe(\"Trip UUID or Trip ID.\"),\n name: z.string().optional().describe(\"Hotel name.\"),\n checkin: z.string().optional().describe(\"Check-in date in YYYY-MM-DD format.\"),\n checkout: z.string().optional().describe(\"Check-out date in YYYY-MM-DD format.\"),\n checkinTime: z.string().optional().describe(\"Check-in time in HH:MM format.\"),\n checkoutTime: z.string().optional().describe(\"Check-out time in HH:MM format.\"),\n timezone: z.string().optional().describe(\"Timezone.\"),\n address: z.string().optional().describe(\"Street address.\"),\n city: z.string().optional().describe(\"City.\"),\n country: z.string().optional().describe(\"Country code such as JP or US.\"),\n state: z.string().optional().describe(\"State or province.\"),\n zip: z.string().optional().describe(\"Postal code.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n rate: z.string().optional().describe(\"Booking rate.\"),\n notes: z.string().optional().describe(\"Notes for the booking.\"),\n cost: z.string().optional().describe(\"Total cost.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateHotel({\n id: args.id,\n tripId: args.trip,\n hotelName: args.name,\n checkInDate: args.checkin,\n checkInTime: args.checkinTime,\n checkOutDate: args.checkout,\n checkOutTime: args.checkoutTime,\n timezone: args.timezone,\n street: args.address,\n city: args.city,\n country: args.country,\n state: args.state,\n zip: args.zip,\n supplierConfNum: args.confirmation,\n bookingRate: args.rate,\n notes: args.notes,\n totalCost: args.cost,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_hotels_delete\",\n {\n title: \"TripIt Hotels Delete\",\n description: \"Delete a hotel reservation by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteHotel(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_hotels_attach_document\",\n {\n title: \"TripIt Hotels Attach Document\",\n description: \"Attach an image or PDF document to a hotel reservation.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n file: z.string().min(1).describe(\"Path to the file on the local filesystem.\"),\n name: z.string().optional().describe(\"Document caption or name.\"),\n mimeType: z.string().optional().describe(\"Optional MIME type override.\"),\n },\n },\n async ({ id, file, name, mimeType }) =>\n jsonResult(\n (await withTripIt((client) =>\n client.attachDocument({\n objectType: \"lodging\",\n objectId: id,\n filePath: file,\n caption: name,\n mimeType,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_hotels_remove_document\",\n {\n title: \"TripIt Hotels Remove Document\",\n description: \"Remove a document from a hotel reservation.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Hotel ID or UUID.\"),\n uuid: z.string().optional().describe(\"Attachment UUID to remove.\"),\n imageUuid: z.string().optional().describe(\"Deprecated alias for uuid.\"),\n url: z.string().optional().describe(\"Document URL to remove.\"),\n caption: z.string().optional().describe(\"Remove the first document with this caption.\"),\n index: z.number().int().positive().optional().describe(\"1-based document index to remove.\"),\n all: z.boolean().optional().describe(\"When true, remove all documents.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id, uuid, imageUuid, url, caption, index, all }) => {\n const resolvedUuid = uuid ?? imageUuid;\n requireExactlyOneSelector(\n [Boolean(resolvedUuid), Boolean(url), Boolean(caption), index !== undefined, Boolean(all)],\n \"Provide exactly one selector: uuid, imageUuid, url, caption, index, or all.\",\n );\n\n return jsonResult(\n (await withTripIt((client) =>\n client.removeDocument({\n objectType: \"lodging\",\n objectId: id,\n imageUuid: resolvedUuid,\n imageUrl: url,\n caption,\n index,\n removeAll: all,\n }),\n )) as Record<string, unknown>,\n );\n },\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\n\nexport function registerTransportTools(server: McpServer): void {\n server.registerTool(\n \"tripit_transport_get\",\n {\n title: \"TripIt Transport Get\",\n description: \"Get a transport item by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Transport ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getTransport(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_transport_create\",\n {\n title: \"TripIt Transport Create\",\n description: \"Add a transport segment to a trip.\",\n inputSchema: {\n trip: z.string().min(1).describe(\"Trip UUID or Trip ID.\"),\n from: z.string().min(1).describe(\"Start address.\"),\n to: z.string().min(1).describe(\"End address.\"),\n departDate: z.string().min(1).describe(\"Departure date in YYYY-MM-DD format.\"),\n departTime: z.string().min(1).describe(\"Departure time in HH:MM format.\"),\n arriveDate: z.string().min(1).describe(\"Arrival date in YYYY-MM-DD format.\"),\n arriveTime: z.string().min(1).describe(\"Arrival time in HH:MM format.\"),\n timezone: z.string().min(1).describe(\"Timezone.\"),\n fromName: z.string().optional().describe(\"Start location name.\"),\n toName: z.string().optional().describe(\"End location name.\"),\n name: z.string().optional().describe(\"Display name.\"),\n vehicle: z.string().optional().describe(\"Vehicle description.\"),\n carrier: z.string().optional().describe(\"Carrier name.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.createTransport({\n tripId: args.trip,\n startAddress: args.from,\n endAddress: args.to,\n startDate: args.departDate,\n startTime: args.departTime,\n endDate: args.arriveDate,\n endTime: args.arriveTime,\n timezone: args.timezone,\n startLocationName: args.fromName,\n endLocationName: args.toName,\n displayName: args.name,\n vehicleDescription: args.vehicle,\n carrierName: args.carrier,\n confirmationNum: args.confirmation,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_transport_update\",\n {\n title: \"TripIt Transport Update\",\n description: \"Update an existing transport item.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Transport ID or UUID.\"),\n trip: z.string().optional().describe(\"Trip UUID or Trip ID.\"),\n from: z.string().optional().describe(\"Start address.\"),\n to: z.string().optional().describe(\"End address.\"),\n departDate: z.string().optional().describe(\"Departure date in YYYY-MM-DD format.\"),\n departTime: z.string().optional().describe(\"Departure time in HH:MM format.\"),\n arriveDate: z.string().optional().describe(\"Arrival date in YYYY-MM-DD format.\"),\n arriveTime: z.string().optional().describe(\"Arrival time in HH:MM format.\"),\n timezone: z.string().optional().describe(\"Timezone.\"),\n fromName: z.string().optional().describe(\"Start location name.\"),\n toName: z.string().optional().describe(\"End location name.\"),\n name: z.string().optional().describe(\"Display name.\"),\n vehicle: z.string().optional().describe(\"Vehicle description.\"),\n carrier: z.string().optional().describe(\"Carrier name.\"),\n confirmation: z.string().optional().describe(\"Confirmation number.\"),\n },\n },\n async (args) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateTransport({\n id: args.id,\n tripId: args.trip,\n startAddress: args.from,\n endAddress: args.to,\n startDate: args.departDate,\n startTime: args.departTime,\n endDate: args.arriveDate,\n endTime: args.arriveTime,\n timezone: args.timezone,\n startLocationName: args.fromName,\n endLocationName: args.toName,\n displayName: args.name,\n vehicleDescription: args.vehicle,\n carrierName: args.carrier,\n confirmationNum: args.confirmation,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_transport_delete\",\n {\n title: \"TripIt Transport Delete\",\n description: \"Delete a transport item by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Transport ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteTransport(id))) as Record<string, unknown>),\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport * as z from \"zod/v4\";\nimport { withTripIt } from \"../client\";\nimport { jsonResult } from \"../results\";\n\nexport function registerTripTools(server: McpServer): void {\n server.registerTool(\n \"tripit_trips_list\",\n {\n title: \"TripIt Trips List\",\n description: \"List trips in the authenticated TripIt account.\",\n inputSchema: {\n pageSize: z.number().int().positive().optional().describe(\"Number of trips to return. Defaults to 100.\"),\n pageNum: z.number().int().positive().optional().describe(\"Page number to fetch. Defaults to 1.\"),\n past: z.boolean().optional().describe(\"When true, list past trips instead of current/future trips.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ pageSize, pageNum, past }) =>\n jsonResult(\n (await withTripIt((client) => client.listTrips(pageSize ?? 100, pageNum ?? 1, past ?? false))) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_trips_get\",\n {\n title: \"TripIt Trips Get\",\n description: \"Get a trip by TripIt ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Trip ID or UUID.\"),\n },\n annotations: {\n readOnlyHint: true,\n idempotentHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.getTrip(id))) as Record<string, unknown>),\n );\n\n server.registerTool(\n \"tripit_trips_create\",\n {\n title: \"TripIt Trips Create\",\n description: \"Create a new trip.\",\n inputSchema: {\n name: z.string().min(1).describe(\"Trip display name.\"),\n start: z.string().optional().describe(\"Start date in YYYY-MM-DD format. Defaults to today.\"),\n end: z.string().optional().describe(\"End date in YYYY-MM-DD format. Defaults to start date or today.\"),\n location: z.string().optional().describe(\"Primary location for the trip.\"),\n },\n },\n async ({ name, start, end, location }) => {\n const today = new Date().toISOString().slice(0, 10);\n return jsonResult(\n (await withTripIt((client) =>\n client.createTrip({\n displayName: name,\n startDate: start ?? today,\n endDate: end ?? start ?? today,\n primaryLocation: location,\n }),\n )) as Record<string, unknown>,\n );\n },\n );\n\n server.registerTool(\n \"tripit_trips_update\",\n {\n title: \"TripIt Trips Update\",\n description: \"Update an existing trip.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Trip ID or UUID.\"),\n name: z.string().optional().describe(\"New trip display name.\"),\n start: z.string().optional().describe(\"Updated start date in YYYY-MM-DD format.\"),\n end: z.string().optional().describe(\"Updated end date in YYYY-MM-DD format.\"),\n location: z.string().optional().describe(\"Updated primary location.\"),\n description: z.string().optional().describe(\"Trip description.\"),\n },\n },\n async ({ id, name, start, end, location, description }) =>\n jsonResult(\n (await withTripIt((client) =>\n client.updateTrip({\n id,\n displayName: name,\n startDate: start,\n endDate: end,\n primaryLocation: location,\n description,\n }),\n )) as Record<string, unknown>,\n ),\n );\n\n server.registerTool(\n \"tripit_trips_delete\",\n {\n title: \"TripIt Trips Delete\",\n description: \"Delete a trip by ID or UUID.\",\n inputSchema: {\n id: z.string().min(1).describe(\"Trip ID or UUID.\"),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ id }) => jsonResult((await withTripIt((client) => client.deleteTrip(id))) as Record<string, unknown>),\n );\n}\n"],"mappings":"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","names":["z","z","z","z","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-server-tripit",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Expose the TripIt API as an MCP server",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@modelcontextprotocol/sdk": "^1.18.1",
22
- "tripit": "^0.1.2",
22
+ "tripit": "^0.1.4",
23
23
  "zod": "^3.25.76"
24
24
  },
25
25
  "devDependencies": {