{
  "$schema": "https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json",
  "name": "com.privyde/executive-transport",
  "version": "1.0.0",
  "title": "Privyde Executive Transport",
  "description": "Read-only MCP server for Privyde — private executive chauffeur transport in Spain. Tools to list services, cities, fleet and popular routes, get company and contact info, and build a pre-filled booking link. Tools never submit a booking; a human confirms every request.",
  "websiteUrl": "https://privyde.com",
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://privyde.com/api/mcp",
      "supportedProtocolVersions": [
        "2025-06-18",
        "2025-03-26",
        "2024-11-05"
      ]
    }
  ],
  "serverInfo": {
    "name": "privyde-executive-transport",
    "version": "1.0.0"
  },
  "transport": {
    "type": "streamable-http",
    "endpoint": "/api/mcp"
  },
  "capabilities": [
    "tools"
  ],
  "serverUrl": "https://privyde.com/api/mcp",
  "tools": [
    {
      "name": "list_services",
      "title": "List Privyde executive transport services (weddings, corporate events, airport transfers, chauffeur by the hour, etc",
      "description": "List Privyde executive transport services (weddings, corporate events, airport transfers, chauffeur by the hour, etc.).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "es",
              "en",
              "fr",
              "de",
              "it",
              "pt"
            ],
            "description": "Language for names and URLs. Defaults to \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_cities",
      "title": "List the Spanish cities Privyde covers, with their main airports",
      "description": "List the Spanish cities Privyde covers, with their main airports.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "es",
              "en",
              "fr",
              "de",
              "it",
              "pt"
            ],
            "description": "Language for names and URLs. Defaults to \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_fleet",
      "title": "List Privyde vehicles with capacity (passengers, luggage) and category",
      "description": "List Privyde vehicles with capacity (passengers, luggage) and category.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "es",
              "en",
              "fr",
              "de",
              "it",
              "pt"
            ],
            "description": "Language for names and URLs. Defaults to \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_popular_routes",
      "title": "List popular point-to-point routes with indicative starting price (EUR), distance and duration",
      "description": "List popular point-to-point routes with indicative starting price (EUR), distance and duration.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "es",
              "en",
              "fr",
              "de",
              "it",
              "pt"
            ],
            "description": "Language for names and URLs. Defaults to \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_company_info",
      "title": "Get Privyde company info: what it offers, coverage, contact channels and how to book",
      "description": "Get Privyde company info: what it offers, coverage, contact channels and how to book.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "es",
              "en",
              "fr",
              "de",
              "it",
              "pt"
            ],
            "description": "Language for names and URLs. Defaults to \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "contact_concierge",
      "title": "Get Privyde contact channels (WhatsApp, email, contact page) to reach a human concierge",
      "description": "Get Privyde contact channels (WhatsApp, email, contact page) to reach a human concierge.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "es",
              "en",
              "fr",
              "de",
              "it",
              "pt"
            ],
            "description": "Language for names and URLs. Defaults to \"es\"."
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_booking_link",
      "title": "Build a pre-filled booking link from known trip details for the user to review and submit",
      "description": "Build a pre-filled booking link from known trip details for the user to review and submit. Returns a URL only — it does NOT submit a booking. The booking is a request confirmed by a human afterwards.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "es",
              "en",
              "fr",
              "de",
              "it",
              "pt"
            ],
            "description": "Language for names and URLs. Defaults to \"es\"."
          },
          "origin": {
            "type": "string",
            "description": "Pickup location (address, airport, hotel)."
          },
          "destination": {
            "type": "string",
            "description": "Drop-off location."
          },
          "date": {
            "type": "string",
            "description": "Pickup date, YYYY-MM-DD."
          },
          "time": {
            "type": "string",
            "description": "Pickup time, 24h HH:MM."
          },
          "passengers": {
            "type": "integer",
            "minimum": 1,
            "maximum": 6
          },
          "luggage": {
            "type": "string",
            "enum": [
              "light",
              "normal",
              "heavy"
            ]
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ]
}