Skip to main content
Glama

Plan a trip

plan_trip
Read-onlyIdempotent

Compare ride-hailing and trotro options together. This is the default tool for multimodal trip planning.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pickupYesResolved pickup place
destinationYesResolved destination place

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
ridesYes
statusYes
trotroYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / trotro / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "data": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "complete": {
      -            "type": "boolean"
      -          },
      -          "routeCounts": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "direct": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "returned": {
      -                    "maximum": 9007199254740991,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "total": {
      -                    "maximum": 9007199254740991,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "truncated": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "total",
      -                  "returned",
      -                  "truncated"
      -                ],
      -                "type": "object"
      -              },
      -              "rideConnection": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "returned": {
      -                    "maximum": 9007199254740991,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "total": {
      -                    "maximum": 9007199254740991,
      -                    "minimum": 0,
      -                    "type": "integer"
      -                  },
      -                  "truncated": {
      -                    "type": "boolean"
      -                  }
      -                },
      -                "required": [
      -                  "total",
      -                  "returned",
      -                  "truncated"
      -                ],
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "direct",
      -              "rideConnection"
      -            ],
      -            "type": "object"
      -          },
      -          "routes": {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "complete": {
      -                  "type": "boolean"
      -                },
      -                "currency": {
      -                  "type": "string"
      -                },
      -                "destinationStop": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "lat": {
      -                          "type": "number"
      -                        },
      -                        "lng": {
      -                          "type": "number"
      -                        },
      -                        "name": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "id": {
      -                  "type": "string"
      -                },
      -                "originStop": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "lat": {
      -                          "type": "number"
      -                        },
      -                        "lng": {
      -                          "type": "number"
      -                        },
      -                        "name": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "segmentCounts": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "returned": {
      -                      "maximum": 9007199254740991,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    },
      -                    "total": {
      -                      "maximum": 9007199254740991,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    },
      -                    "truncated": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "total",
      -                    "returned",
      -                    "truncated"
      -                  ],
      -                  "type": "object"
      -                },
      -                "segments": {
      -                  "items": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "alightAt": {
      -                        "anyOf": [
      -                          {
      -                            "additionalProperties": false,
      -                            "properties": {
      -                              "lat": {
      -                                "type": "number"
      -                              },
      -                              "lng": {
      -                                "type": "number"
      -                              },
      -                              "name": {
      -                                "type": "string"
      -                              }
      -                            },
      -                            "type": "object"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "boardAt": {
      -                        "anyOf": [
      -                          {
      -                            "additionalProperties": false,
      -                            "properties": {
      -                              "lat": {
      -                                "type": "number"
      -                              },
      -                              "lng": {
      -                                "type": "number"
      -                              },
      -                              "name": {
      -                                "type": "string"
      -                              }
      -                            },
      -                            "type": "object"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "currency": {
      -                        "type": "string"
      -                      },
      -                      "fare": {
      -                        "type": "number"
      -                      },
      -                      "routeDestination": {
      -                        "type": "string"
      -                      },
      -                      "routeName": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "boardAt",
      -                      "alightAt"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "totalFare": {
      -                  "type": "number"
      -                },
      -                "transferCount": {
      -                  "type": "number"
      -                },
      -                "walkingDistanceFromDestinationKm": {
      -                  "type": "number"
      -                },
      -                "walkingDistanceToPickupKm": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "originStop",
      -                "destinationStop",
      -                "segments",
      -                "segmentCounts",
      -                "complete"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "routesRequiringRideConnection": {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "complete": {
      -                  "type": "boolean"
      -                },
      -                "currency": {
      -                  "type": "string"
      -                },
      -                "destinationStop": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "lat": {
      -                          "type": "number"
      -                        },
      -                        "lng": {
      -                          "type": "number"
      -                        },
      -                        "name": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "id": {
      -                  "type": "string"
      -                },
      -                "originStop": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "lat": {
      -                          "type": "number"
      -                        },
      -                        "lng": {
      -                          "type": "number"
      -                        },
      -                        "name": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "segmentCounts": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "returned": {
      -                      "maximum": 9007199254740991,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    },
      -                    "total": {
      -                      "maximum": 9007199254740991,
      -                      "minimum": 0,
      -                      "type": "integer"
      -                    },
      -                    "truncated": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "total",
      -                    "returned",
      -                    "truncated"
      -                  ],
      -                  "type": "object"
      -                },
      -                "segments": {
      -                  "items": {
      -                    "additionalProperties": false,
      -                    "properties": {
      -                      "alightAt": {
      -                        "anyOf": [
      -                          {
      -                            "additionalProperties": false,
      -                            "properties": {
      -                              "lat": {
      -                                "type": "number"
      -                              },
      -                              "lng": {
      -                                "type": "number"
      -                              },
      -                              "name": {
      -                                "type": "string"
      -                              }
      -                            },
      -                            "type": "object"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "boardAt": {
      -                        "anyOf": [
      -                          {
      -                            "additionalProperties": false,
      -                            "properties": {
      -                              "lat": {
      -                                "type": "number"
      -                              },
      -                              "lng": {
      -                                "type": "number"
      -                              },
      -                              "name": {
      -                                "type": "string"
      -                              }
      -                            },
      -                            "type": "object"
      -                          },
      -                          {
      -                            "type": "null"
      -                          }
      -                        ]
      -                      },
      -                      "currency": {
      -                        "type": "string"
      -                      },
      -                      "fare": {
      -                        "type": "number"
      -                      },
      -                      "routeDestination": {
      -                        "type": "string"
      -                      },
      -                      "routeName": {
      -                        "type": "string"
      -                      }
      -                    },
      -                    "required": [
      -                      "boardAt",
      -                      "alightAt"
      -                    ],
      -                    "type": "object"
      -                  },
      -                  "type": "array"
      -                },
      -                "totalFare": {
      -                  "type": "number"
      -                },
      -                "transferCount": {
      -                  "type": "number"
      -                },
      -                "walkingDistanceFromDestinationKm": {
      -                  "type": "number"
      -                },
      -                "walkingDistanceToPickupKm": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "originStop",
      -                "destinationStop",
      -                "segments",
      -                "segmentCounts",
      -                "complete"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "routes",
      -          "routesRequiringRideConnection",
      -          "routeCounts",
      -          "complete"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "enum": [
      -          "complete",
      -          "partial"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "data"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "error": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "code": {
      -            "enum": [
      -              "cancelled",
      -              "timeout",
      -              "unavailable"
      -            ],
      -            "type": "string"
      -          },
      -          "message": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "code",
      -          "message"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "const": "failed",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "data": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "complete": {
      +            "type": "boolean"
      +          },
      +          "routeCounts": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "direct": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "returned": {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "total": {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "truncated": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "total",
      +                  "returned",
      +                  "truncated"
      +                ],
      +                "type": "object"
      +              },
      +              "rideConnection": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "returned": {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "total": {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  },
      +                  "truncated": {
      +                    "type": "boolean"
      +                  }
      +                },
      +                "required": [
      +                  "total",
      +                  "returned",
      +                  "truncated"
      +                ],
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "direct",
      +              "rideConnection"
      +            ],
      +            "type": "object"
      +          },
      +          "routes": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "complete": {
      +                  "type": "boolean"
      +                },
      +                "currency": {
      +                  "type": "string"
      +                },
      +                "destinationStop": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "lat": {
      +                          "type": "number"
      +                        },
      +                        "lng": {
      +                          "type": "number"
      +                        },
      +                        "name": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "id": {
      +                  "type": "string"
      +                },
      +                "originStop": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "lat": {
      +                          "type": "number"
      +                        },
      +                        "lng": {
      +                          "type": "number"
      +                        },
      +                        "name": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "segmentCounts": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "returned": {
      +                      "maximum": 9007199254740991,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "total": {
      +                      "maximum": 9007199254740991,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "truncated": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "total",
      +                    "returned",
      +                    "truncated"
      +                  ],
      +                  "type": "object"
      +                },
      +                "segments": {
      +                  "items": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "alightAt": {
      +                        "anyOf": [
      +                          {
      +                            "additionalProperties": false,
      +                            "properties": {
      +                              "lat": {
      +                                "type": "number"
      +                              },
      +                              "lng": {
      +                                "type": "number"
      +                              },
      +                              "name": {
      +                                "type": "string"
      +                              }
      +                            },
      +                            "type": "object"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "boardAt": {
      +                        "anyOf": [
      +                          {
      +                            "additionalProperties": false,
      +                            "properties": {
      +                              "lat": {
      +                                "type": "number"
      +                              },
      +                              "lng": {
      +                                "type": "number"
      +                              },
      +                              "name": {
      +                                "type": "string"
      +                              }
      +                            },
      +                            "type": "object"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "currency": {
      +                        "type": "string"
      +                      },
      +                      "fare": {
      +                        "type": "number"
      +                      },
      +                      "routeDestination": {
      +                        "type": "string"
      +                      },
      +                      "routeName": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "boardAt",
      +                      "alightAt"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "totalFare": {
      +                  "type": "number"
      +                },
      +                "transferCount": {
      +                  "type": "number"
      +                },
      +                "walkingDistanceFromDestinationKm": {
      +                  "type": "number"
      +                },
      +                "walkingDistanceToPickupKm": {
      +                  "type": "number"
      +                },
      +                "walkingUncertaintyNote": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "originStop",
      +                "destinationStop",
      +                "segments",
      +                "segmentCounts",
      +                "complete"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "routesRequiringRideConnection": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "complete": {
      +                  "type": "boolean"
      +                },
      +                "currency": {
      +                  "type": "string"
      +                },
      +                "destinationStop": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "lat": {
      +                          "type": "number"
      +                        },
      +                        "lng": {
      +                          "type": "number"
      +                        },
      +                        "name": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "id": {
      +                  "type": "string"
      +                },
      +                "originStop": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "lat": {
      +                          "type": "number"
      +                        },
      +                        "lng": {
      +                          "type": "number"
      +                        },
      +                        "name": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "segmentCounts": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "returned": {
      +                      "maximum": 9007199254740991,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "total": {
      +                      "maximum": 9007199254740991,
      +                      "minimum": 0,
      +                      "type": "integer"
      +                    },
      +                    "truncated": {
      +                      "type": "boolean"
      +                    }
      +                  },
      +                  "required": [
      +                    "total",
      +                    "returned",
      +                    "truncated"
      +                  ],
      +                  "type": "object"
      +                },
      +                "segments": {
      +                  "items": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "alightAt": {
      +                        "anyOf": [
      +                          {
      +                            "additionalProperties": false,
      +                            "properties": {
      +                              "lat": {
      +                                "type": "number"
      +                              },
      +                              "lng": {
      +                                "type": "number"
      +                              },
      +                              "name": {
      +                                "type": "string"
      +                              }
      +                            },
      +                            "type": "object"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "boardAt": {
      +                        "anyOf": [
      +                          {
      +                            "additionalProperties": false,
      +                            "properties": {
      +                              "lat": {
      +                                "type": "number"
      +                              },
      +                              "lng": {
      +                                "type": "number"
      +                              },
      +                              "name": {
      +                                "type": "string"
      +                              }
      +                            },
      +                            "type": "object"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      },
      +                      "currency": {
      +                        "type": "string"
      +                      },
      +                      "fare": {
      +                        "type": "number"
      +                      },
      +                      "routeDestination": {
      +                        "type": "string"
      +                      },
      +                      "routeName": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "boardAt",
      +                      "alightAt"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "totalFare": {
      +                  "type": "number"
      +                },
      +                "transferCount": {
      +                  "type": "number"
      +                },
      +                "walkingDistanceFromDestinationKm": {
      +                  "type": "number"
      +                },
      +                "walkingDistanceToPickupKm": {
      +                  "type": "number"
      +                },
      +                "walkingUncertaintyNote": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "originStop",
      +                "destinationStop",
      +                "segments",
      +                "segmentCounts",
      +                "complete"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "skipNote": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "routes",
      +          "routesRequiringRideConnection",
      +          "routeCounts",
      +          "complete"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "enum": [
      +          "complete",
      +          "partial"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "data"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "error": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "code": {
      +            "enum": [
      +              "cancelled",
      +              "timeout",
      +              "unavailable"
      +            ],
      +            "type": "string"
      +          },
      +          "message": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "const": "failed",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds no extra behavioral details (e.g., pagination, response format) beyond the core multimodal comparison, which is acceptable given the annotations.

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

Conciseness5/5

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

Two sentences with zero redundancy. The primary purpose is front-loaded, and the default-tool note is efficient and actionable.

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

Completeness4/5

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

With an output schema present, return values are covered. The description plus schema adequately define the tool's behavior and inputs for a read-only multimodal planner. Could mention that pickup/destination should be resolved places, but that is already implied by the placeId schema description.

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?

Schema description coverage is reported as 100% (though name/address lack descriptions in the schema, the metric suggests coverage). The description does not elaborate on parameters, but the schema provides adequate meaning, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the tool compares ride-hailing and trotro options together, which is a specific verb+resource. It also declares itself as the default for multimodal trip planning, distinguishing it from single-mode siblings like compare_rides and plan_trotro_route.

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

Usage Guidelines4/5

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

The description explicitly frames this as the default for multimodal planning, implying use when both modes are needed. However, it does not explicitly state when to use the single-mode alternatives or provide exclusions, so it stops short of full guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources