TripIt

Create and update TripIt travel plans by sending structured confirmation emails to plans@tripit.com. Supports flights, hotels, activities, car rentals, rail,...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 31 · 0 current installs · 0 all-time installs
byAdam Westland@adamwestland
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the included assets: the SKILL.md and scripts/tripit-email.py generate TripIt-formatted email bodies. Requiring python3 is appropriate and no unrelated binaries, env vars, or cloud credentials are requested.
Instruction Scope
Instructions stay within the expected scope (generate a plain-text email body and send it to plans@tripit.com). However the SKILL.md recommends storing the user's private TripIt iCal feed URL for verification — that URL contains a private hash and is effectively a secret; the guidance to 'store' it expands scope into persistent storage of sensitive data and should be treated carefully.
Install Mechanism
No install spec — instruction-only with a small Python helper script included. No downloads from external URLs or package installs are present.
Credentials
The skill declares no environment variables or credentials, which is proportionate. Caveat: verification steps rely on the user's private TripIt iCal feed URL (sensitive); the skill does not declare how that will be stored or protected.
Persistence & Privilege
always:false and no special privileges requested. The skill does suggest storing user-specific data (iCal URL) but does not request platform-wide persistence or modify other skills' configs.
Assessment
This skill appears to do what it says: it formats plain-text TripIt-approved confirmation emails for you to send to plans@tripit.com. Before installing or enabling it: (1) review the included script locally (scripts/tripit-email.py) to confirm it only formats text and makes no network calls; (2) be cautious about storing a user's TripIt iCal feed URL — treat it like a secret (it contains a private hash) and avoid persisting it unencrypted or sharing it; (3) ensure any email-sending tool the agent uses (MS Graph, Himalaya, gog, etc.) is trusted and constrained so the agent cannot send arbitrary emails without user approval; (4) if you want stricter control, do not grant autonomous agent invocation or persist the iCal URL — require explicit user confirmation for each send. If you want, I can scan the full script for anything else or suggest a minimal safe workflow for storing/verifying the iCal feed.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk97dh0pfg93faytdjr9b1xb9ad82y7q1

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

✈️ Clawdis
Binspython3

SKILL.md

TripIt Skill

Add travel plans to TripIt by sending structured confirmation emails to plans@tripit.com. No API keys required — just email sending capability.

How It Works

TripIt parses specially formatted emails ("TripIt Approved" format) into travel objects. This skill generates those emails; you send them with whatever email tool you have (MS Graph, Himalaya, gog, etc.).

Flow:

  1. User says "add my flight to TripIt"
  2. You construct JSON from their details
  3. tripit-email.py generates the formatted email body
  4. You send it to plans@tripit.com
  5. TripIt creates the trip object within seconds

Setup

The sender email must be associated with the user's TripIt account. Either:

  • The email is the one they signed up with, OR
  • They've added it at TripIt → Settings → Connected Email Addresses

No other configuration needed.

Usage

Generate a flight confirmation

echo '{"airline":"United Airlines","flight_number":"1234","class":"Economy",
  "departure_city":"San Francisco","departure_airport":"SFO",
  "departure_date":"2025-06-15","departure_time":"08:30",
  "arrival_city":"New York","arrival_airport":"JFK",
  "arrival_date":"2025-06-15","arrival_time":"17:05",
  "passenger":"Jane Smith","confirmation":"UA1234X",
  "booking_site_url":"https://www.united.com"}' \
| python3 scripts/tripit-email.py flight

Generate a hotel confirmation

echo '{"hotel_name":"Hotel & Spa Napa Valley","checkin_date":"2025-06-15",
  "checkout_date":"2025-06-18","city":"Napa","state":"CA","country":"US",
  "street_address":"123 Vineyard Lane","confirmation":"NV8842",
  "number_of_guests":"2","rate":"189.00","currency":"USD"}' \
| python3 scripts/tripit-email.py hotel

Generate an activity

echo '{"activity_name":"Wine Tasting Tour","location":"Sonoma Valley Vineyards",
  "start_date":"2025-06-16","start_time":"10:00",
  "end_date":"2025-06-16","end_time":"14:00",
  "city":"Sonoma","state":"CA","country":"US"}' \
| python3 scripts/tripit-email.py activity

Generate a multi-item email

echo '{"items":[
  {"type":"flight","airline":"United Airlines","flight_number":"1234",
   "departure_city":"San Francisco","departure_airport":"SFO",
   "departure_date":"2025-06-15","departure_time":"08:30",
   "arrival_city":"New York","arrival_airport":"JFK",
   "arrival_date":"2025-06-15","arrival_time":"17:05",
   "passenger":"Jane Smith","confirmation":"UA1234X"},
  {"type":"hotel","hotel_name":"The Manhattan Grand","checkin_date":"2025-06-15",
   "checkout_date":"2025-06-18","city":"New York","state":"NY","country":"US",
   "confirmation":"MG7890"}
]}' \
| python3 scripts/tripit-email.py multi

Include a subject line

Add --subject to any command to get a suggested email subject:

echo '...' | python3 scripts/tripit-email.py --subject flight

Sending the Email

The script outputs the email body. You send it using whatever email tool is available.

MS Graph (Microsoft 365 users)

BODY=$(echo '...' | python3 scripts/tripit-email.py flight)
# Use your MS Graph email sending tool to send:
#   To: plans@tripit.com
#   Subject: United Airlines SFO-JFK 2025-06-15
#   Body: $BODY (plain text)

Himalaya

echo '...' | python3 scripts/tripit-email.py --subject flight > /tmp/tripit-email.txt
himalaya send --to plans@tripit.com \
  --subject "$(head -1 /tmp/tripit-email.txt | sed 's/Subject: //')" \
  --body "$(tail -n +3 /tmp/tripit-email.txt)"

gog (Google OAuth)

BODY=$(echo '...' | python3 scripts/tripit-email.py flight)
gog send --to plans@tripit.com --subject "Flight confirmation" --body "$BODY"

Field Reference

See references/template-format.md for the complete field list for each object type, including required vs optional fields and formatting rules.

Supported Object Types

TypeCommandKey Required Fields
Flightflightairline, flight_number, departure/arrival airport+date+time
Hotelhotelhotel_name, checkin_date, checkout_date
Activityactivityactivity_name, start_date
Car Rentalcarrental_company, pickup_date, dropoff_date
Railrailcarrier, departure/arrival date+time
MultiplemultiEach item needs type + that type's required fields

Verifying Items Landed

After sending an email, confirm TripIt processed it by fetching the user's iCal feed:

  1. The user provides their TripIt iCal URL (found at TripIt → Settings → Calendar Feed), e.g.: https://www.tripit.com/feed/ical/private/<hash>/tripit.ics
  2. Fetch the feed and look for the newly added item (match on confirmation number, dates, or summary text)
  3. If the item doesn't appear after ~60 seconds, check:
    • Was the sender email linked to the TripIt account?
    • Was the email sent as plain text (not HTML)?
    • Were all required fields present?
# Fetch and search the feed for a confirmation number
curl -s "https://www.tripit.com/feed/ical/private/<hash>/tripit.ics" \
  | grep -A5 "UA1234X"

Tip: Store the user's iCal feed URL so you can verify future sends without asking again. The URL is stable — it doesn't change unless the user regenerates it.

Gotchas

  • Date format consistency: Use one format per email (ISO 8601 recommended: 2026-03-15)
  • Sender email must be linked: TripIt ignores emails from unrecognized addresses
  • Plain text only: Send as plain text, not HTML
  • Multi-line fields: End with *** on its own line (e.g., long notes or cancellation policies)
  • Processing time: TripIt usually processes within seconds, occasionally up to a few minutes
  • Duplicates: TripIt deduplicates by confirmation number — re-sending updates the existing entry
  • Field labels matter: TripIt's parser is strict about label names. This script uses the exact labels from TripIt's official vendor templates. Don't hand-craft emails with different labels (e.g., "Confirmation Number" won't work — it must be "Booking confirmation #")

Files

3 total
Select a file
Select a file to preview.

Comments

Loading comments…