{"name":"io.github.theluckystrike/odometry-mileage-log","slug":"theluckystrike-odometry-mileage-log","title":"Odometry Mileage Log","description":"Mileage log and reimbursement","url":"https://mcp.market/server/theluckystrike-odometry-mileage-log","rating":null,"grade":"C","score":67,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T07:31:12.518Z","last_ok_at":"2026-11-04T07:31:12.518Z","latency_ms":553},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://mileage-log.zovo.one/","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://mileage-log.zovo.one/mcp"}],"packages":[],"tools":[{"name":"calculate_mileage_reimbursement","description":"Use this when the user asks for a mileage reimbursement calculator, mileage deduction, or the IRS mileage rate 2026 applied to a number of miles (\"how much can I deduct for 4,200 business miles\", \"my employer pays 0.70 a mile how much do I get\", \"odometer 41230 to 46890 how many business miles\"). Applies the IRS standard mileage rate for the date driven (2025: 70 cents; Jan-Jun 2026: 72.5 cents; Jul-Dec 2026: 76 cents per business mile; medical/moving 21, 20.5, 23.5 cents; charity 14 cents), splits miles across the July 1, 2026 rate change, compares a custom employer rate with the IRS rate, and turns odometer readings into miles. Does not build a trip-by-trip log (use generate_mileage_log), look up distances, or give tax advice.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"miles":{"description":"Miles to reimburse or deduct, e.g. 4200. Leave out when odometer_start and odometer_end are given.","type":"number","minimum":0,"maximum":1000000},"date":{"description":"When the miles were driven, YYYY-MM-DD or YYYY-MM, e.g. \"2026-08-15\" or \"2026-03\". Picks the IRS rate for that date. Default: today.","type":"string","maxLength":20},"segments":{"description":"Miles split by date when they straddle a rate change, e.g. [{\"miles\":1800,\"date\":\"2026-05\"},{\"miles\":2400,\"date\":\"2026-09\"}].","maxItems":60,"type":"array","items":{"type":"object","properties":{"miles":{"type":"number","minimum":0,"maximum":1000000,"description":"Miles in this part, e.g. 1800."},"date":{"type":"string","maxLength":20,"description":"Date or month of these miles, e.g. \"2026-05\" or \"2026-09-30\"."}},"required":["miles","date"]}},"category":{"description":"business (default), medical, moving (Armed Forces only) or charity.","type":"string","enum":["business","medical","moving","charity"]},"custom_rate_per_mile":{"description":"Employer or contract rate in US dollars per mile, e.g. 0.70 or 0.60. The IRS amount is shown next to it.","type":"number","minimum":0,"maximum":5},"odometer_start":{"description":"Odometer reading at the start, e.g. 41230.","type":"number","minimum":0,"maximum":9999999},"odometer_end":{"description":"Odometer reading at the end, e.g. 46890.","type":"number","minimum":0,"maximum":9999999},"personal_miles":{"description":"Personal or commuting miles inside the odometer range to subtract, e.g. 900.","type":"number","minimum":0,"maximum":1000000}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"generate_mileage_log","description":"Use this when the user wants a mileage log, mileage log template, mileage log for taxes, printable mileage log, mileage log in Excel, or mileage reimbursement report from trips they drove (\"turn these trips into a mileage log for my taxes\", \"reconstruct my mileage log from my calendar\"). Takes typed trips (date, from, to, purpose, miles or odometer start/end), recurring trips (for example weekdays in a month) and/or an attached CSV/XLSX file. Applies the IRS standard mileage rate for each trip's date (2025: 70 cents; Jan-Jun 2026: 72.5 cents; Jul-Dec 2026: 76 cents per business mile; medical, moving and charity rates) or a custom employer rate, checks odometer continuity, flags commuting and missing purposes, and totals by month, purpose and client. Returns a PDF mileage log and an XLSX file. Does not look up distances between addresses, track GPS, or give tax advice. Do not use for a single quick mileage total with no trip list (use calculate_mileage_reimbursement).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"trips":{"description":"Typed trips, one per drive, e.g. [{\"date\":\"2026-10-05\",\"from\":\"Office\",\"to\":\"Client A\",\"purpose\":\"Sales meeting\",\"miles\":12.4}].","maxItems":500,"type":"array","items":{"type":"object","properties":{"date":{"type":"string","maxLength":40,"description":"Date of the trip, YYYY-MM-DD, e.g. \"2026-10-05\". Turn weekdays like \"Mon\" into real dates from the conversation."},"from":{"description":"Start location, e.g. \"Office\" or \"Home\".","type":"string","maxLength":120},"to":{"description":"Destination (the IRS requires it), e.g. \"Client A - 410 Main St, Austin TX\".","type":"string","maxLength":120},"purpose":{"description":"Business purpose (the IRS requires it), e.g. \"Quarterly review meeting\" or \"Home visit, patient care\".","type":"string","maxLength":200},"client":{"description":"Optional client, customer, project or property for totals by client, e.g. \"Acme Corp\" or \"123 Oak Ln listing\".","type":"string","maxLength":80},"miles":{"description":"Miles driven as the user gives them, e.g. 12.4. If the user says \"12.4 mi round trip\", 12.4 is already the total: pass 12.4 with round_trip false. Leave out when odometer readings are given.","type":"number","minimum":0,"maximum":100000},"odometer_start":{"description":"Odometer reading at the start of the trip, e.g. 41230.","type":"number","minimum":0,"maximum":9999999},"odometer_end":{"description":"Odometer reading at the end of the trip, e.g. 41254.8. Miles = end - start.","type":"number","minimum":0,"maximum":9999999},"round_trip":{"description":"true only when miles is the ONE-WAY distance and the driver came back the same way (\"6.2 mi each way\"): miles are doubled. Ignored when odometer readings are given.","type":"boolean"},"category":{"description":"business (default), medical, moving (Armed Forces only), charity, commute (logged, not reimbursed) or personal (logged, not reimbursed).","type":"string","enum":["business","medical","moving","charity","commute","personal"]}},"required":["date"]}},"recurring":{"description":"Repeating trips, e.g. \"every weekday in October, 18 mi to the clinic\" -> [{\"start_date\":\"2026-10-01\",\"end_date\":\"2026-10-31\",\"to\":\"Clinic\",\"purpose\":\"Patient visits\",\"miles\":18}].","maxItems":20,"type":"array","items":{"type":"object","properties":{"start_date":{"type":"string","maxLength":20,"description":"First date of the repeat, YYYY-MM-DD, e.g. \"2026-10-01\"."},"end_date":{"type":"string","maxLength":20,"description":"Last date of the repeat (inclusive), YYYY-MM-DD, e.g. \"2026-10-31\"."},"weekdays":{"description":"Days of the week it happens, default Monday-Friday, e.g. [\"mon\",\"wed\",\"fri\"].","maxItems":7,"type":"array","items":{"type":"string","enum":["sun","mon","tue","wed","thu","fri","sat"]}},"from":{"description":"Start location, e.g. \"Office\".","type":"string","maxLength":120},"to":{"description":"Destination, e.g. \"Riverside Clinic\".","type":"string","maxLength":120},"purpose":{"description":"Business purpose, e.g. \"Patient home visits\".","type":"string","maxLength":200},"client":{"description":"Optional client or project, e.g. \"Riverside Clinic\".","type":"string","maxLength":80},"miles":{"type":"number","minimum":0,"maximum":100000,"description":"Miles per occurrence as given, e.g. 18 (the round-trip total if the user says \"18 mi round trip\")."},"round_trip":{"description":"true only if miles is one-way and should be doubled.","type":"boolean"},"category":{"description":"business (default), medical, moving, charity, commute or personal.","type":"string","enum":["business","medical","moving","charity","commute","personal"]}},"required":["start_date","end_date","miles"]}},"file":{"type":"object","properties":{"download_url":{"type":"string","description":"Temporary download link for the file, supplied by ChatGPT."},"file_id":{"type":"string","description":"ChatGPT file id, e.g. file_abc123."},"mime_type":{"description":"Media type if known, e.g. application/pdf.","type":"string"},"file_name":{"description":"Original file name if known, e.g. statement.pdf.","type":"string"}},"required":["download_url","file_id"],"description":"Optional trip spreadsheet the user attached (CSV, TSV or XLSX) with columns such as Date, From, To, Purpose, Miles, or Odometer start and Odometer end, e.g. trips.xlsx."},"custom_rate_per_mile":{"description":"Employer or contract reimbursement rate in US dollars per mile for business trips, e.g. 0.60. Leave out to use the IRS standard mileage rate for each trip date.","type":"number","minimum":0,"maximum":5},"log_title":{"description":"Title printed on the log, e.g. \"October 2026 mileage\".","type":"string","maxLength":80},"driver_name":{"description":"Optional driver name printed on the log, e.g. \"Dana Lee\".","type":"string","maxLength":80},"vehicle":{"description":"Optional vehicle description printed on the log, e.g. \"2021 Toyota Camry\". No VIN or plate needed.","type":"string","maxLength":80},"year_start_odometer":{"description":"Odometer at the start of the year (or of the log period), e.g. 38500. With year_end_odometer it gives total miles and business-use percentage.","type":"number","minimum":0,"maximum":9999999},"year_end_odometer":{"description":"Odometer at the end of the year (or of the log period), e.g. 52120.","type":"number","minimum":0,"maximum":9999999},"regular_workplace":{"description":"Name of the user's regular office or workplace, e.g. \"Main St office\", to flag home-to-office commuting.","type":"string","maxLength":80},"home_office_is_principal_place":{"description":"true if the user's home office is their principal place of business (then trips from home are not flagged as commuting).","type":"boolean"},"skip_dates":{"description":"Dates to leave out of recurring trips (holidays, PTO), YYYY-MM-DD, e.g. [\"2026-10-12\"].","maxItems":60,"type":"array","items":{"type":"string","maxLength":20}}},"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":67,"grade":"C","scanned_at":"2026-10-25T09:25:34.827Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-25T09:25:34.809Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1044ms"]},"poisoning":{"score":15,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://mileage-log.zovo.one/mcp","reachable":true,"authRequired":false,"latencyMs":1044,"serverInfo":{"name":"mileage-log","version":"1.0.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://mileage-log.zovo.one/icon.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}