Skip to main content
Glama
markswendsen-code

Enterprise Rent-A-Car MCP Connector

get_vehicle_details

Retrieve comprehensive vehicle details including pricing breakdown and available protection options for Enterprise Rent-A-Car reservations using a specific vehicle ID.

Instructions

Get detailed information, full pricing breakdown, and available protection options for a specific vehicle from search results.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
vehicle_idYesVehicle ID from search_vehicles results
rate_codeNoRate code for specific pricing tier

Implementation Reference

  • The main handler function that implements the get_vehicle_details tool logic. It accepts a vehicleId and optional rateCode, navigates to a page (with error handling), and returns detailed vehicle information including pricing breakdown and protection options.
    async getVehicleDetails(
      vehicleId: string,
      rateCode?: string
    ): Promise<VehicleResult & { rate_details: object; protection_options: object[] }> {
      const page = this.getPage();
    
      try {
        // Navigate to vehicle detail page (if available)
        await page.goto(
          `https://www.enterprise.com/en/car-rental/locations/us.html`,
          { waitUntil: "domcontentloaded", timeout: 15000 }
        );
      } catch {
        // Fall through to mock
      }
    
      return {
        vehicle_id: vehicleId,
        make_model: "Toyota Corolla or similar",
        vehicle_class: "Economy",
        transmission: "Automatic",
        passengers: 5,
        bags: 2,
        daily_rate: 39.99,
        total_rate: 39.99,
        currency: "USD",
        features: ["AC", "Bluetooth", "USB Charging", "Power Windows", "Power Locks"],
        availability: "Available",
        mileage_policy: "Unlimited",
        rate_code: rateCode ?? "STANDARD",
        rate_details: {
          base_rate: 39.99,
          taxes: 5.84,
          fees: 3.50,
          total_before_optional: 49.33,
          currency: "USD",
        },
        protection_options: [
          {
            id: "ldw",
            name: "Loss Damage Waiver (LDW)",
            description: "Covers damage to the rental vehicle with no out-of-pocket costs",
            daily_rate: 15.99,
            currency: "USD",
          },
          {
            id: "pai",
            name: "Personal Accident Insurance (PAI)",
            description: "Covers medical costs for you and your passengers",
            daily_rate: 4.99,
            currency: "USD",
          },
          {
            id: "pec",
            name: "Personal Effects Coverage (PEC)",
            description: "Covers theft of personal items from the rental vehicle",
            daily_rate: 2.99,
            currency: "USD",
          },
        ],
      } as VehicleResult & { rate_details: object; protection_options: object[] };
    }
  • Zod schema definition for input validation. Defines vehicle_id as required string and rate_code as optional string, with descriptions for each parameter.
    const GetVehicleDetailsSchema = z.object({
      vehicle_id: z.string().describe("Vehicle ID from search_vehicles results"),
      rate_code: z
        .string()
        .optional()
        .describe("Rate code for specific pricing tier"),
    });
  • src/index.ts:220-237 (registration)
    Tool registration block that defines the tool name 'get_vehicle_details', its description, and JSON Schema input schema for the MCP protocol.
      name: "get_vehicle_details",
      description:
        "Get detailed information, full pricing breakdown, and available protection options for a specific vehicle from search results.",
      inputSchema: {
        type: "object" as const,
        properties: {
          vehicle_id: {
            type: "string",
            description: "Vehicle ID from search_vehicles results",
          },
          rate_code: {
            type: "string",
            description: "Rate code for specific pricing tier",
          },
        },
        required: ["vehicle_id"],
      },
    },
  • The switch case dispatcher that handles 'get_vehicle_details' tool calls. It parses the input parameters using the Zod schema, invokes the browser.getVehicleDetails handler, and returns the result as JSON text content.
    case "get_vehicle_details": {
      const params = GetVehicleDetailsSchema.parse(args);
      const result = await browser.getVehicleDetails(
        params.vehicle_id,
        params.rate_code
      );
      return {
        content: [
          {
            type: "text" as const,
            text: JSON.stringify(result, null, 2),
          },
        ],
      };
    }
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves information (a read operation) but doesn't address critical aspects like whether this requires authentication, rate limits, error conditions, or what happens with invalid inputs. The description is functional but lacks operational context needed for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently communicates the core functionality without unnecessary words. It's appropriately front-loaded with the main purpose, though it could potentially be split for even better clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (detailed vehicle information with pricing and options), lack of annotations, and absence of an output schema, the description is insufficient. It doesn't explain what 'detailed information' includes, how pricing breakdowns are structured, or what format the response takes. For a tool with two parameters and no structured output documentation, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so both parameters (vehicle_id, rate_code) are documented in the schema. The description adds minimal value beyond this, mentioning 'specific vehicle' which aligns with vehicle_id and 'pricing breakdown' which hints at rate_code's purpose. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('get detailed information', 'full pricing breakdown', 'available protection options') and identifies the target resource ('specific vehicle from search results'). It distinguishes itself from siblings like 'search_vehicles' by focusing on detailed retrieval rather than searching, though it doesn't explicitly contrast with other siblings like 'get_account'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'from search results', suggesting this tool should be used after a search operation. However, it lacks explicit guidance on when to use this versus alternatives like 'get_account' or 'get_loyalty_points', and doesn't mention prerequisites or exclusions beyond the implied vehicle_id requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/markswendsen-code/mcp-enterprise'

If you have feedback or need assistance with the MCP directory API, please join our Discord server