Add a traveler
The add_traveler MCP tool: add a traveler.
add_traveler · writes · reaches people outside bymundi
REST: POST /v1/trips/{tripId}/travelers
What the model reads
Adds one passenger to a trip — last, or at position (0 = first). Send what you know; the rest stays empty and shows as missing. Refused when the trip's travelers headcount is full (raise it with update_trip) or when a not-yet-accepted trip has no passengers. On a booked (reservada) trip a new email receives the app-access email. undo_change removes the passenger again within 30 days.
Permissions: travelers:write. Undo: the result names a change id; undo_change reverts it.
Input
| Field | Type | Required | Description |
|---|---|---|---|
tripId |
uuid | yes | |
position |
integer | 0 = first on the booking. Past the end = last. 0–39 | |
title |
"mr" | "mrs" | "ms" | "mstr" | "miss" | null | Form of address; the app derives one from sex and age when empty. | |
firstName |
string | null | ||
lastName1 |
string | null | Surname(s) as on the passport — the app asks for both surnames here. | |
lastName2 |
string | null | A second surname stored separately (older passengers); usually null. | |
birthDate |
string | null | ||
sex |
"m" | "f" | null | ||
nationality |
string | null | ||
docType |
"dni" | "nie" | "passport" | "other" | null | ||
docNumber |
string | null | ||
docExpiry |
string | null | ||
docCountry |
string | null | The country that issued the document. | |
email |
email | null | ||
phone |
string | null | ||
address |
object | null | ||
address.line1 |
string | null | yes | |
address.line2 |
string | null | yes | |
address.postalCode |
string | null | yes | |
address.city |
string | null | yes | |
address.region |
string | null | yes | |
address.country |
string | null | yes | |
taxId |
string | null |
Input schema (JSON)
{
"type": "object",
"properties": {
"tripId": {
"type": "string",
"format": "uuid"
},
"position": {
"type": "integer",
"minimum": 0,
"maximum": 39,
"description": "0 = first on the booking. Past the end = last."
},
"title": {
"anyOf": [
{
"type": "string",
"enum": [
"mr",
"mrs",
"ms",
"mstr",
"miss"
]
},
{
"type": "null"
}
],
"description": "Form of address; the app derives one from sex and age when empty."
},
"firstName": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"lastName1": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
],
"description": "Surname(s) as on the passport — the app asks for both surnames here."
},
"lastName2": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
],
"description": "A second surname stored separately (older passengers); usually null."
},
"birthDate": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"sex": {
"anyOf": [
{
"type": "string",
"enum": [
"m",
"f"
]
},
{
"type": "null"
}
]
},
"nationality": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Z]{2}$"
},
{
"type": "null"
}
]
},
"docType": {
"anyOf": [
{
"type": "string",
"enum": [
"dni",
"nie",
"passport",
"other"
]
},
{
"type": "null"
}
]
},
"docNumber": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"docExpiry": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"docCountry": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Z]{2}$"
},
{
"type": "null"
}
],
"description": "The country that issued the document."
},
"email": {
"anyOf": [
{
"type": "string",
"format": "email",
"maxLength": 200
},
{
"type": "null"
}
]
},
"phone": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"address": {
"anyOf": [
{
"type": "object",
"properties": {
"line1": {
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"line2": {
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"postalCode": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
]
},
"city": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"region": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"country": {
"anyOf": [
{
"type": "string",
"pattern": "^[A-Z]{2}$"
},
{
"type": "null"
}
]
}
},
"required": [
"line1",
"line2",
"postalCode",
"city",
"region",
"country"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"taxId": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
]
}
},
"required": [
"tripId"
],
"additionalProperties": false
}