Query 12train.com for SNCF train tickets (TGV, TER, Intercités, Eurostar, Lyria). Resolve stations, find one-way and round-trip journeys, apply discount cards, and identify complex connection routings.
Query 12train.com, an official SNCF ticket reseller. Find routes, schedules, check detailed pricing conditions (TGV, TER, Eurostar), handle multi-passenger groups with discount cards, and evaluate round-trip discounts.
Base command:
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py
Always use this first to resolve city names into exact SNCF API accepted station names before running searches.
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py stations "Paris"
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py stations "Lyon"
Basic one-way lookup. Defaults to 1 Adult.
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py search \
--origin "Paris (toutes gares)" \
--destination "Lyon (toutes gares)" \
--date "10/04/2026" \
--hour 8
Use repeating --passenger flags. Format as AGE_GROUP or
AGE_GROUP:DISCOUNT_CARD.
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py search \
--origin "Paris" --destination "Bordeaux" --date "12/04/2026" --hour 9 \
--passenger adult \
--passenger youth:avantage_jeune \
--passenger senior:avantage_senior
baby (0-3), child (4-11), youth (12-25), adult
(26-59), senior (60+)avantage_jeune, avantage_adulte, avantage_senior,
avantage_week_end, liberte, famille_30, famille_40, famille_50,
famille_75, militaire_1, militaire_2Force the journey to make a connection at a specific station.
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py search \
--origin "Paris" --destination "Nice" --date "10/04/2026" --hour 8 \
--via "Marseille Saint-Charles"
Fetches both Outward and potential Return journeys contextually.
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py search \
--origin "Paris" --destination "Lyon" \
--date "10/04/2026" --hour 8 \
--return-date "15/04/2026" --return-hour 18
Applying a return date can dynamically discount Outward tickets (e.g.
"aller-retour" pricing). If you only want to retrieve Outward prices without
burning time/bandwidth evaluating Return tickets yet, use --skip-return.
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py search \
--origin "Paris" --destination "Lyon" \
--date "10/04/2026" --hour 8 \
--return-date "15/04/2026" --return-hour 18 \
--skip-return
If a user selects a specific Outward train (from the resulting JSON, find its
bo_key), use --outward-bo-key to generate Inward Return options perfectly
calibrated to that exact reservation leg without retrieving Outward options
again.
uv run /root/.moltis/skills/12trains-skill-moltis/scripts/12train.py search \
--origin "Paris" --destination "Lyon" \
--date "10/04/2026" --hour 8 \
--return-date "15/04/2026" --return-hour 18 \
--outward-bo-key "89a8d876-81c7-4793-c90f-c32d6f73d7c1"
When the user asks about train travel in France:
stations command. Example: User
asks for "Chambéry", you run stations "Chambery" and receive
"Chambéry - Challes-les-Eaux".6 (06:00) if not specified to
show a full day's results. Default to 1 adult if no demographic is
provided.--skip-return to show Outward
choices with accurate round-trip discounts natively applied.bo_key.--outward-bo-key <bo_key> to
securely produce Return choices based on their previous selected path.fare_name and fare_condition (like "Standard Première -
Echangeable sous conditions") so the user distinguishes between standard,
refundable, or flex pricing variants in the same class.{
"outward": [
{
"departure_time": "15/04/2026 21:04",
"arrival_time": "15/04/2026 23:08",
"origin": "Lyon Part Dieu",
"destination": "Paris Gare De Lyon",
"bo_key": "a398bedf-1e45-d68c-9c67-d67639d76ab8",
"duration": "2h04",
"trains": "TGV Inoui",
"changes": 0,
"prices": [
{
"price": "39.00",
"fare_name": "Tarif Standard Seconde",
"fare_condition": "Billet échangeable et remboursable sans frais jusqu’à J-7..."
}
]
}
],
"return": []
}
httpx[http2] capabilities.