Odometry Mileage Log
Mileage log and reimbursement
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen calculate_mileage_reimbursement
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"odometry-mileage-log": {
"url": "https://mileage-log.zovo.one/mcp"
}
}
}Puntos de conexión remotos
https://mileage-log.zovo.one/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (2)
🟢generate_mileage_log(trips, recurring, file, custom_rate_per_mile, log_title, ...)
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).
Esquema de entrada
{
"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#"
}Esquema de salida
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"title": {
"type": "string"
},
"period": {
"type": "string"
},
"rate_basis": {
"type": "string"
},
"totals": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"vehicle_use": {},
"rates_used": {
"type": "array",
"items": {}
},
"by_month": {
"type": "array",
"items": {}
},
"by_purpose": {
"type": "array",
"items": {}
},
"by_client": {
"type": "array",
"items": {}
},
"flags": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"preview": {
"type": "array",
"items": {}
},
"source": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"kind",
"title",
"period",
"rate_basis",
"totals",
"vehicle_use",
"rates_used",
"by_month",
"by_purpose",
"by_client",
"flags",
"preview",
"source",
"notes",
"downloads"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢calculate_mileage_reimbursement(miles, date, segments, category, custom_rate_per_mile, ...)
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.
Esquema de entrada
{
"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#"
}Esquema de salida
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"category": {
"type": "string"
},
"miles": {
"type": "number"
},
"amount": {
"type": "number"
},
"amount_text": {
"type": "string"
},
"rate_basis": {
"type": "string"
},
"lines": {
"type": "array",
"items": {}
},
"irs_amount": {
"type": "number"
},
"custom": {},
"odometer": {},
"alternatives": {
"type": "array",
"items": {}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"kind",
"category",
"miles",
"amount",
"amount_text",
"rate_basis",
"lines",
"irs_amount",
"custom",
"odometer",
"alternatives",
"notes"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Comunidad
Evidencia