Mileage log and reimbursement
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
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.
Miles to reimburse or deduct, e.g. 4200. Leave out when odometer_start and odometer_end are given.
business (default), medical, moving (Armed Forces only) or charity.
Miles split by date when they straddle a rate change, e.g. [{"miles":1800,"date":"2026-05"},{"miles":2400,"date":"2026-09"}].
Odometer reading at the end, e.g. 46890.
Odometer reading at the start, e.g. 41230.
Personal or commuting miles inside the odometer range to subtract, e.g. 900.
Employer or contract rate in US dollars per mile, e.g. 0.70 or 0.60. The IRS amount is shown next to it.
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.
| Argument | Type | Description |
|---|---|---|
| date | string | 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. |
| miles | number | Miles to reimburse or deduct, e.g. 4200. Leave out when odometer_start and odometer_end are given. |
| category | string | business (default), medical, moving (Armed Forces only) or charity. |
| segments | array | Miles split by date when they straddle a rate change, e.g. [{"miles":1800,"date":"2026-05"},{"miles":2400,"date":"2026-09"}]. |
| odometer_end | number | Odometer reading at the end, e.g. 46890. |
| odometer_start | number | Odometer reading at the start, e.g. 41230. |
| personal_miles | number | Personal or commuting miles inside the odometer range to subtract, e.g. 900. |
| custom_rate_per_mile | number | 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": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"maxLength": 20,
"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."
},
"miles": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Miles to reimburse or deduct, e.g. 4200. Leave out when odometer_start and odometer_end are given."
},
"category": {
"enum": [
"business",
"medical",
"moving",
"charity"
],
"type": "string",
"description": "business (default), medical, moving (Armed Forces only) or charity."
},
"segments": {
"type": "array",
"items": {
"type": "object",
"required": [
"miles",
"date"
],
"properties": {
"date": {
"type": "string",
"maxLength": 20,
"description": "Date or month of these miles, e.g. \"2026-05\" or \"2026-09-30\"."
},
"miles": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Miles in this part, e.g. 1800."
}
}
},
"maxItems": 60,
"description": "Miles split by date when they straddle a rate change, e.g. [{\"miles\":1800,\"date\":\"2026-05\"},{\"miles\":2400,\"date\":\"2026-09\"}]."
},
"odometer_end": {
"type": "number",
"maximum": 9999999,
"minimum": 0,
"description": "Odometer reading at the end, e.g. 46890."
},
"odometer_start": {
"type": "number",
"maximum": 9999999,
"minimum": 0,
"description": "Odometer reading at the start, e.g. 41230."
},
"personal_miles": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Personal or commuting miles inside the odometer range to subtract, e.g. 900."
},
"custom_rate_per_mile": {
"type": "number",
"maximum": 5,
"minimum": 0,
"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."
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| file | object | 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. |
| trips | array | Typed trips, one per drive, e.g. [{"date":"2026-10-05","from":"Office","to":"Client A","purpose":"Sales meeting","miles":12.4}]. |
| vehicle | string | Optional vehicle description printed on the log, e.g. "2021 Toyota Camry". No VIN or plate needed. |
| log_title | string | Title printed on the log, e.g. "October 2026 mileage". |
| recurring |
| array |
| 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}]. |
| skip_dates | array | Dates to leave out of recurring trips (holidays, PTO), YYYY-MM-DD, e.g. ["2026-10-12"]. |
| driver_name | string | Optional driver name printed on the log, e.g. "Dana Lee". |
| regular_workplace | string | Name of the user's regular office or workplace, e.g. "Main St office", to flag home-to-office commuting. |
| year_end_odometer | number | Odometer at the end of the year (or of the log period), e.g. 52120. |
| year_start_odometer | number | 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. |
| custom_rate_per_mile | number | 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. |
| home_office_is_principal_place | boolean | true if the user's home office is their principal place of business (then trips from home are not flagged as commuting). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"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."
},
"trips": {
"type": "array",
"items": {
"type": "object",
"required": [
"date"
],
"properties": {
"to": {
"type": "string",
"maxLength": 120,
"description": "Destination (the IRS requires it), e.g. \"Client A - 410 Main St, Austin TX\"."
},
"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": {
"type": "string",
"maxLength": 120,
"description": "Start location, e.g. \"Office\" or \"Home\"."
},
"miles": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"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."
},
"client": {
"type": "string",
"maxLength": 80,
"description": "Optional client, customer, project or property for totals by client, e.g. \"Acme Corp\" or \"123 Oak Ln listing\"."
},
"purpose": {
"type": "string",
"maxLength": 200,
"description": "Business purpose (the IRS requires it), e.g. \"Quarterly review meeting\" or \"Home visit, patient care\"."
},
"category": {
"enum": [
"business",
"medical",
"moving",
"charity",
"commute",
"personal"
],
"type": "string",
"description": "business (default), medical, moving (Armed Forces only), charity, commute (logged, not reimbursed) or personal (logged, not reimbursed)."
},
"round_trip": {
"type": "boolean",
"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."
},
"odometer_end": {
"type": "number",
"maximum": 9999999,
"minimum": 0,
"description": "Odometer reading at the end of the trip, e.g. 41254.8. Miles = end - start."
},
"odometer_start": {
"type": "number",
"maximum": 9999999,
"minimum": 0,
"description": "Odometer reading at the start of the trip, e.g. 41230."
}
}
},
"maxItems": 500,
"description": "Typed trips, one per drive, e.g. [{\"date\":\"2026-10-05\",\"from\":\"Office\",\"to\":\"Client A\",\"purpose\":\"Sales meeting\",\"miles\":12.4}]."
},
"vehicle": {
"type": "string",
"maxLength": 80,
"description": "Optional vehicle description printed on the log, e.g. \"2021 Toyota Camry\". No VIN or plate needed."
},
"log_title": {
"type": "string",
"maxLength": 80,
"description": "Title printed on the log, e.g. \"October 2026 mileage\"."
},
"recurring": {
"type": "array",
"items": {
"type": "object",
"required": [
"start_date",
"end_date",
"miles"
],
"properties": {
"to": {
"type": "string",
"maxLength": 120,
"description": "Destination, e.g. \"Riverside Clinic\"."
},
"from": {
"type": "string",
"maxLength": 120,
"description": "Start location, e.g. \"Office\"."
},
"miles": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Miles per occurrence as given, e.g. 18 (the round-trip total if the user says \"18 mi round trip\")."
},
"client": {
"type": "string",
"maxLength": 80,
"description": "Optional client or project, e.g. \"Riverside Clinic\"."
},
"purpose": {
"type": "string",
"maxLength": 200,
"description": "Business purpose, e.g. \"Patient home visits\"."
},
"category": {
"enum": [
"business",
"medical",
"moving",
"charity",
"commute",
"personal"
],
"type": "string",
"description": "business (default), medical, moving, charity, commute or personal."
},
"end_date": {
"type": "string",
"maxLength": 20,
"description": "Last date of the repeat (inclusive), YYYY-MM-DD, e.g. \"2026-10-31\"."
},
"weekdays": {
"type": "array",
"items": {
"enum": [
"sun",
"mon",
"tue",
"wed",
"thu",
"fri",
"sat"
],
"type": "string"
},
"maxItems": 7,
"description": "Days of the week it happens, default Monday-Friday, e.g. [\"mon\",\"wed\",\"fri\"]."
},
"round_trip": {
"type": "boolean",
"description": "true only if miles is one-way and should be doubled."
},
"start_date": {
"type": "string",
"maxLength": 20,
"description": "First date of the repeat, YYYY-MM-DD, e.g. \"2026-10-01\"."
}
}
},
"maxItems": 20,
"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}]."
},
"skip_dates": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20
},
"maxItems": 60,
"description": "Dates to leave out of recurring trips (holidays, PTO), YYYY-MM-DD, e.g. [\"2026-10-12\"]."
},
"driver_name": {
"type": "string",
"maxLength": 80,
"description": "Optional driver name printed on the log, e.g. \"Dana Lee\"."
},
"regular_workplace": {
"type": "string",
"maxLength": 80,
"description": "Name of the user's regular office or workplace, e.g. \"Main St office\", to flag home-to-office commuting."
},
"year_end_odometer": {
"type": "number",
"maximum": 9999999,
"minimum": 0,
"description": "Odometer at the end of the year (or of the log period), e.g. 52120."
},
"year_start_odometer": {
"type": "number",
"maximum": 9999999,
"minimum": 0,
"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."
},
"custom_rate_per_mile": {
"type": "number",
"maximum": 5,
"minimum": 0,
"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."
},
"home_office_is_principal_place": {
"type": "boolean",
"description": "true if the user's home office is their principal place of business (then trips from home are not flagged as commuting)."
}
}
}