{"name":"io.github.thirdtrail/thirdtrail","slug":"thirdtrail","title":null,"description":"Elevation-corrected sun, moon, twilight, solar and tide data for any point on Earth","url":"https://mcp.market/server/thirdtrail","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-10-17T20:29:04.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T08:20:46.532Z","last_ok_at":"2026-11-04T08:20:46.532Z","latency_ms":76},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/thirdtrail/thirdtrail-python","website":"https://thirdtrail.life/docs/mcp/","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://thirdtrail.life/mcp","headers":[{"description":"Your thirdtrail API key as 'Bearer tt_live_…'. Mint one at https://thirdtrail.life/apis/keys/. The MCP server requires a paid plan; the REST API has a free tier.","isRequired":true,"isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"get_daily_light_integral","description":"Clear-sky Daily Light Integral in mol/m²/day for each day in a range: photosynthetically active radiation integrated from sunrise to sunset. Use it to plan crop growth or supplemental greenhouse lighting; it assumes cloudless skies, so treat it as the ceiling for the site. Pass from and to together for a range of UTC days, or neither for today. Requires an API key on a paid Solar plan.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees."},"elevation":{"type":"number","minimum":-500,"maximum":9000,"description":"Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown."},"from":{"type":"string","description":"First UTC day, YYYY-MM-DD. Requires to."},"to":{"type":"string","description":"Last UTC day, YYYY-MM-DD. Requires from."}},"required":["lat","lon"]}},{"name":"get_prayer_times","description":"Fajr, sunrise, dhuhr, asr, maghrib and isha for one date at a location, elevation-corrected. Use it for Islamic prayer schedules; for general sunrise, sunset and twilight use get_sun_moon_times. school is required and sets the fajr and isha rules; asr_method picks the shadow rule and defaults to shafi. date defaults to today. Requires an API key on a paid Ephemerides plan.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees."},"tz":{"type":"string","description":"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."},"elevation":{"type":"number","minimum":-500,"maximum":9000,"description":"Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown."},"date":{"type":"string","description":"Day as YYYY-MM-DD. Defaults to today."},"school":{"type":"string","enum":["egyptian","isna","karachi","mwl","uaq"],"description":"Calculation school: mwl (Muslim World League), isna (Islamic Society of North America), egyptian (Egyptian General Authority of Survey), karachi (University of Islamic Sciences, Karachi), uaq (Umm al-Qura, Makkah)."},"asr_method":{"type":"string","enum":["hanafi","shafi"],"description":"Asr shadow rule: shafi (default; also Maliki and Hanbali) or hanafi, which gives a later Asr."}},"required":["lat","lon","school"]}},{"name":"get_solar_path","description":"The sun's azimuth and altitude through one UTC day, sampled every interval: a list of timestamped positions. Use it for shading studies, PV siting and panel-angle planning; for a single instant use get_solar_position. date defaults to today and interval to 15m. Requires an API key on a paid Solar plan.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees."},"elevation":{"type":"number","minimum":-500,"maximum":9000,"description":"Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown."},"date":{"type":"string","description":"UTC day as YYYY-MM-DD. Defaults to today."},"interval":{"type":"string","enum":["1m","5m","15m","1h","1d"],"description":"Sampling step. Defaults to 15m."}},"required":["lat","lon"]}},{"name":"get_solar_position","description":"The sun's position at one instant: azimuth, altitude, zenith, declination, hour angle and equation of time, plus clear-sky irradiance (GHI, DNI and DHI in W/m²) when include asks for it and the plan covers it. Use it for where the sun is at a given moment; for its track through a whole day use get_solar_path, and for rise and set times use get_sun_moon_times. timestamp defaults to now. Positions are NREL SPA-equivalent on JPL DE421; irradiance comes from the Bird clear-sky model. Requires an API key on a paid Solar plan.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees."},"tz":{"type":"string","description":"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."},"elevation":{"type":"number","minimum":-500,"maximum":9000,"description":"Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown."},"timestamp":{"type":"string","description":"ISO 8601 instant, e.g. 2026-06-21T12:00:00Z. Defaults to now."},"include":{"type":"string","enum":["position","position,irradiance"],"description":"position (default) or position,irradiance."}},"required":["lat","lon"]}},{"name":"get_sun_moon_times","description":"Sunrise, sunset, solar noon, civil, nautical and astronomical twilight, golden and blue hour, moonrise, moonset and moon phase for a location, one entry per day. Use it for any question about when the sun or moon rises, sets or gets dark; for the sun's angle at a given moment use get_solar_position, and for tides alongside the sun use get_tide_window. Pass elevation whenever you know it: it shifts sunrise and sunset at altitude. Defaults: from today, 7 days or the plan's limit if lower. Requires an API key on a paid Ephemerides plan.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees."},"tz":{"type":"string","description":"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."},"elevation":{"type":"number","minimum":-500,"maximum":9000,"description":"Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown."},"days":{"type":"integer","minimum":1,"description":"Number of days to return. The ceiling is plan-dependent."},"start_date":{"type":"string","description":"First day as YYYY-MM-DD. Defaults to today."}},"required":["lat","lon"]}},{"name":"get_tide_extremes","description":"High and low water times and heights at any coastal point, from the FES2022 global tide atlas: a list of events, each with type (high or low), time and height_m. Use it for when high or low tide is; for a continuous curve use get_tide_heights, and for tides together with sunrise, golden hour and moon phase use get_tide_window. Heights are metres relative to MEAN SEA LEVEL, not chart datum — never use for navigation. Defaults: from today, 2 days or the plan's limit if lower. Requires an API key on a paid Tides plan.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees."},"tz":{"type":"string","description":"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."},"days":{"type":"integer","minimum":1,"description":"Number of days to return. The ceiling is plan-dependent."},"start_date":{"type":"string","description":"First day as YYYY-MM-DD. Defaults to today."}},"required":["lat","lon"]}},{"name":"get_tide_heights","description":"Water height at a coastal point at a fixed step: a list of time and height_m pairs. Use it to plot a tide curve or read the height at a particular time; for just the highs and lows use get_tide_extremes. Metres relative to mean sea level, not chart datum. Defaults: from today, 2 days, and the finest step the plan allows, but no finer than 10m. Requires an API key on a paid Tides plan.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees."},"tz":{"type":"string","description":"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."},"days":{"type":"integer","minimum":1,"description":"Number of days to return. The ceiling is plan-dependent."},"start_date":{"type":"string","description":"First day as YYYY-MM-DD. Defaults to today."},"step":{"type":"string","enum":["1m","5m","10m","15m","30m","1h"],"description":"Sampling interval. Finer steps need a higher plan."}},"required":["lat","lon"]}},{"name":"get_tide_window","description":"Per day: high and low waters together with sunrise, sunset, golden and blue hour, twilight and moon phase in a single call. The planning tool for coastal photography, fishing and shore work; use it instead of calling get_tide_extremes and get_sun_moon_times separately. Pass elevation when you know it: it shifts the sun and moon times — roughly three minutes at clifftop height — but never the tide heights, which do not depend on where the observer stands. Defaults: from today, 2 days or the plan's limit if lower. Requires an API key on a paid Tides plan.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees."},"lon":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees."},"tz":{"type":"string","description":"IANA timezone for output timestamps, e.g. Europe/Dublin. Defaults to UTC."},"elevation":{"type":"number","minimum":-500,"maximum":9000,"description":"Metres above sea level. Supply it when known: at altitude the sun rises measurably earlier than the sea-level answer. Omit only if the elevation is genuinely unknown."},"days":{"type":"integer","minimum":1,"description":"Number of days to return. The ceiling is plan-dependent."},"start_date":{"type":"string","description":"First day as YYYY-MM-DD. Defaults to today."}},"required":["lat","lon"]}}],"scan":{"score":85,"grade":"A","scanned_at":"2026-11-03T01:06:44.984Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-03T01:06:44.945Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1695ms"]},"poisoning":{"score":15,"max":15,"notes":["8 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 16 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://thirdtrail.life/mcp","reachable":true,"authRequired":false,"latencyMs":1695,"serverInfo":{"name":"thirdtrail","version":"1.3.0"}}],"packages":[],"repo":{"found":true,"owner":"thirdtrail","repo":"thirdtrail-python","archived":false,"pushedAt":"2026-10-17T20:29:04Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/297576497?v=4","ownerCreatedAt":"2026-06-28T07:35:02Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-10-17T20:29:04.000Z","score":23}}}},"grade_history":[{"kind":"restore","fromGrade":"B","toGrade":"A","reason":"score 85","createdAt":"2026-11-03T01:06:46.602Z"}],"reviews":[]}