Odometry Mileage Log

Mileage log and reimbursement

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
90%
命名品質
90%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(1)

  • LOWTool 'calculate_mileage_reimbursement' name length outside 3-30 range在 calculate_mileage_reimbursement 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~2,942Token(工具定義)
~13.7 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.30%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "odometry-mileage-log": {
      "url": "https://mileage-log.zovo.one/mcp"
    }
  }
}

遠端端點

https://mileage-log.zovo.one/mcpstreamable-http

它能做什麼

工具清單

工具(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).

輸入結構描述

{
  "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#"
}

輸出結構描述

{
  "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.

輸入結構描述

{
  "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#"
}

輸出結構描述

{
  "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
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本2 個工具