| name | 12train |
| description | 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. |
| allowed_tools | ["exec"] |
12train — SNCF Train Ticket Search
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
Core Commands
Autocomplete / Resolve Stations
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"
Search One-Way Trains
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
Advanced Search Features
1. Custom Passengers & Discount Cards
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
- Age Groups:
baby (0-3), child (4-11), youth (12-25), adult
(26-59), senior (60+)
- Discount Cards:
avantage_jeune, avantage_adulte, avantage_senior,
avantage_week_end, liberte, famille_30, famille_40, famille_50,
famille_75, militaire_1, militaire_2
2. Intermediate Waypoints (Via)
Force 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"
Round Trips & Contextual Bookings
Basic Round-Trip Search
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
Optimize: Skip Return Fetch but keep Round-Trip Discounts
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
Match Return Options to an Outward Choice
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"
How to Use This Skill
When the user asks about train travel in France:
- Resolve Stations: Always start with
stations command. Example: User
asks for "Chambéry", you run stations "Chambery" and receive
"Chambéry - Challes-les-Eaux".
- Setup Defaults: Assume departure hour
6 (06:00) if not specified to
show a full day's results. Default to 1 adult if no demographic is
provided.
- Conversational Multi-Step Booking Flow:
- A. User says "I want a round-trip from Paris to Lyon."
- B. Formulate outward context with
--skip-return to show Outward
choices with accurate round-trip discounts natively applied.
- C. Determine User's choice and extract its
bo_key.
- D. Call the identical command appending
--outward-bo-key <bo_key> to
securely produce Return choices based on their previous selected path.
- Clarify Pricing: Prices are delivered dynamically per-train. Present the
specific
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.
Output Format
{
"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..."
}
]
Security & Privacy
- Read-Only Capability: This skill performs webform automation internally
but cannot execute final payments or bookings. It is purely instructional
to guide users over timetables and pricing.
- Follows anti-bot simulation seamlessly mapping human browsing behavior
utilizing the core
httpx[http2] capabilities.