irs-mileage-rate-per-diem-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@irs-mileage-rate-per-diem-mcpWhat's my mileage deduction for 6,200 business miles from Jan to Jun 2026?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
irs-mileage-rate-per-diem-mcp
An MCP server that gives an AI assistant the official IRS standard mileage rates, including the July 1, 2026 increase to 76 cents a mile, the GSA per diem rates for every ZIP code for FY2026 and FY2027, and the IRS high-low per diem rates from Notice 2026-60. It calculates mileage deductions and trip per diem with the right rate for each date.
Hosted endpoint, no sign-in and no token:
https://irs-mileage-rate-per-diem-mcp.lipmichal.workers.dev/mcpTools
Tool | What it does |
| IRS business, medical, charity and military moving rates for a year or date (2011-2026), the depreciation part of the business rate and the FAVR / employer-vehicle maximum value. |
| Deduction or tax-free reimbursement for a list of trips, each at the rate in force on its date. Splits 2026 at July 1 and returns the basis reduction for business miles. |
| GSA maximum lodging by month and M&IE for a ZIP code or city, with the meal breakdown and the 75% first and last day amount. FY2026 and FY2027. |
| Maximum per diem for a trip: each night at that month's lodging rate (across seasons and the Oct. 1 fiscal year change), M&IE with 75% on travel days, minus provided meals. |
| IRS high-low rates, the meals portion, transportation industry M&IE and incidentals rate for a date, and whether a city is a high-cost locality on that date. |
Every result has structured JSON, a plain-English summary, as_of, source (the irs.gov or gsa.gov document) and more (a self-employed tax calculator on taxbreakcalc.com).
Related MCP server: goodvat
What it knows that your model does not
The IRS raised the 2026 business mileage rate mid-year: 72.5 cents a mile from Jan. 1 to June 30, 2026 and 76 cents from July 1, 2026 (Announcement 2026-11). Medical and military moving went from 20.5 to 23.5 cents. Charity stays at 14 cents.
The depreciation part of the 2026 business rate is 35 cents a mile. The FAVR and employer-vehicle maximum value for 2026 is $61,700 (Notice 2026-10).
FY2027 GSA per diem (from Oct. 1, 2026): standard CONUS rate $113 lodging and $68 M&IE, and the rates for 295 named destinations by month.
IRS high-low method from Oct. 1, 2026: $329 high and $230 low, with $86 and $74 treated as meals (Notice 2026-60). Tucson, San Mateo, Albuquerque and Cody were added; Panama City was removed.
The IRS had not announced the 2027 mileage rates on 2026-11-03. The tools say so.
Install
Claude.ai custom connector or ChatGPT developer mode
Add a custom connector and paste the URL. No token is needed.
https://irs-mileage-rate-per-diem-mcp.lipmichal.workers.dev/mcpClaude Code
claude mcp add --transport http mileage-per-diem https://irs-mileage-rate-per-diem-mcp.lipmichal.workers.dev/mcpOr run it locally:
claude mcp add mileage-per-diem -- npx -y github:theluckystrike/irs-mileage-rate-per-diem-mcpClaude Desktop
Add this to claude_desktop_config.json:
{
"mcpServers": {
"mileage-per-diem": {
"command": "npx",
"args": ["-y", "github:theluckystrike/irs-mileage-rate-per-diem-mcp"]
}
}
}Cursor
Add this to ~/.cursor/mcp.json:
{
"mcpServers": {
"mileage-per-diem": {
"url": "https://irs-mileage-rate-per-diem-mcp.lipmichal.workers.dev/mcp"
}
}
}VS Code
Add this to .vscode/mcp.json:
{
"servers": {
"mileage-per-diem": {
"type": "http",
"url": "https://irs-mileage-rate-per-diem-mcp.lipmichal.workers.dev/mcp"
}
}
}Node 20 or newer is needed for the local npx version.
Example prompts
"What is the IRS mileage rate for 2026? Did it change during the year?"
"I drove 6,200 business miles from January to June 2026 and 5,800 from July to December. What is my deduction?"
"What is the per diem for ZIP 02110 in March 2027?"
"Calculate the per diem for a trip to Washington DC from September 29 to October 2, 2026, with lunch provided one day."
"What are the IRS high-low per diem rates from October 2026, and is Chicago high-cost in November?"
Data sources
IRS Notice 2026-10, Announcement 2026-11, Notice 2025-5, the IRS standard mileage rates table, Notices 2026-60 and 2025-54, the GSA FY2026 and FY2027 per diem ZIP code files and the GSA M&IE breakdown table, all fetched on 2026-11-03. See DATA_SOURCES.md.
Limitations
General information, not tax advice.
Per diem covers the continental U.S. (CONUS) only. Alaska, Hawaii, territories and foreign rates (OCONUS, set by the Department of Defense and State Department) are not included.
GSA rates for FY2026 and FY2027 only. Mileage rates for 2011 to 2026.
Some ZIP codes span more than one per diem area. The tools list every match; pick by the county the lodging is in.
The trip calculator applies the federal travel rules (75% M&IE on the first and last day). Your employer's policy can differ.
More
Self-employed and tracking deductions? Use the self-employed set-aside calculator on taxbreakcalc.com.
Part of the Zovo MCP collection: https://mcp.zovo.one
Development
npm install
npm run build
npm testsrc/core.ts holds the rates and rules and has no I/O. src/gsa.ts and src/highcost.ts are generated from the GSA files and Notice tables. src/stdio.ts is the local entry and src/worker.ts is the Cloudflare Worker entry. Both use the same tool registry in src/tools.ts.
License
MIT
More data servers from the same author
Each one is free, needs no API key and has a hosted URL you can paste into Claude or ChatGPT.
server | tools | hosted URL |
convert_ingredient, search_ingredients, scale_recipe, convert_oven_temperature |
| |
calculate_dscr, max_loan_for_target_dscr, rent_needed_for_target_dscr, compare_scenarios, amortization_summary |
| |
get_gold_price_per_gram, get_metal_prices, calculate_jewelry_value, convert_gold_units |
| |
search_lakes, get_lake_level, get_lake_history, compare_lakes |
| |
get_minimum_wage, list_upcoming_increases, compare_states, annual_income_at_minimum_wage |
| |
calculate_overtime_deduction, calculate_tips_deduction, calculate_senior_deduction, estimate_tax_savings, explain_eligibility |
| |
calculate_take_home_pay, compare_states_take_home, salary_to_hourly, hourly_to_salary, get_federal_tax_brackets |
| |
calculate_uk_take_home, get_uk_tax_bands, compare_salaries, marginal_rate_at_income |
| |
list_federal_holidays, is_business_day, add_business_days, count_business_days, invoice_due_date |
| |
calculate_sample_size, estimate_test_duration, test_ab_significance, fisher_exact_test, check_peeking_risk |
| |
get_federal_poverty_level, calculate_premium_tax_credit, check_subsidy_cliff, get_aptc_repayment_cap |
| |
get_ap_score_distribution, estimate_ap_percentile, compare_ap_exams, list_ap_exams, estimate_ap_score_from_composite |
| |
calculate_car_loan_interest_deduction, calculate_salt_deduction, get_tax_brackets_and_standard_deduction, calculate_child_tax_credit |
| |
calculate_inflation, get_latest_cpi, get_inflation_rate, compare_raise_to_inflation, calculate_social_security_cola |
| |
get_exemption_amounts, calculate_estate_tax, check_gift, compare_years |
| |
lookup_ingredient_nutrition, calculate_recipe_nutrition, round_nutrition_label, scale_recipe_nutrition |
| |
get_contribution_limits, calculate_max_contribution, get_social_security_cola, compare_years |
| |
calculate_section_179, calculate_bonus_depreciation, get_vehicle_depreciation_limits, calculate_asset_loan_payment |
| |
calculate_rap_payment, compare_rap_vs_standard, get_federal_loan_limits, get_plan_transition_dates |
| |
find_subdomains, resolve_subdomains, get_certificate_history, summarize_attack_surface |
| |
calculate_statutory_sick_pay, calculate_statutory_maternity_pay, get_minimum_wage_rates, check_eligibility |
|
The paid back-office collection (invoices, VAT, PDFs, spreadsheets) is at https://mcp.zovo.one
Available Tools
5 toolscalculate_mileage_deductionMileage deduction or reimbursement calculatorARead-onlyIdempotentInspect
Calculates the deduction or tax-free reimbursement for driven miles at the IRS standard mileage rates, splitting by the date each trip was driven. Applies the 2026 mid-year increase automatically (72.5 cents before July 1, 76 cents from July 1). Supports business, medical, charity and military moving miles, returns the amount per rate period and purpose, and the depreciation basis reduction for business miles. Notes who can and cannot deduct (employees' unreimbursed mileage is not deductible after the One, Big, Beautiful Bill Act).
| Name | Required | Description | Default |
|---|---|---|---|
| trips | Yes | Trips or mileage totals, each with a date. | |
| default_purpose | No | Purpose for trips that do not set one. Default business. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses concrete 2026 rate values, the automatic mid-year split, what the response contains (amount per rate period and purpose, depreciation basis reduction), and an eligibility caveat about unreimbursed employee mileage. That is substantive behavioral context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then rate mechanics, then return contents, then eligibility. Dense but nearly every clause carries information. It is a single long paragraph rather than structured, which slightly reduces scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so — amounts per rate period and purpose, plus depreciation basis reduction. Combined with the rate values and eligibility note, an agent has enough to call and interpret results correctly; only the moving/military wording is a small blemish.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the date on each trip determines which rate period applies, and purposes are enumerated with a business default. Minor friction: it says 'military moving' while the enum value is just 'moving', a small mismatch an agent must resolve.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: calculates the deduction or tax-free reimbursement for driven miles at IRS standard rates. The scope (date-split rates, per-purpose breakdown, depreciation basis) clearly separates it from sibling rate-lookup tools like get_mileage_rate and from calculate_trip_per_diem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use it — computing a deduction or reimbursement from actual trips, with a note on who can and cannot deduct. It does not explicitly route the agent away from siblings (e.g. 'use get_mileage_rate to look up a rate without computing an amount'), so the alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_trip_per_diemTrip per diem calculator (GSA rates)ARead-onlyIdempotentInspect
Calculates the maximum federal per diem for a business trip: lodging for each night at that month's GSA rate (crossing seasons and the Oct. 1 fiscal year change), M&IE for each day with 75% on the first and last day, minus meals provided at the GSA breakdown amounts. Uses the official FY2026 and FY2027 GSA rates for trips between Oct. 1, 2025 and Sept. 30, 2027.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit ZIP code of the destination (best match). | |
| city | No | City or county name, e.g. "Boston" or "Maricopa". | |
| state | No | 2-letter state code, e.g. MA. | |
| end_date | Yes | Last travel day (YYYY-MM-DD). | |
| start_date | Yes | First travel day (YYYY-MM-DD). | |
| meals_provided | No | Number of meals provided (by a conference or the employer) to deduct from M&IE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower, yet the description adds real substance: 75% M&IE on first/last day, meal deductions taken at GSA breakdown amounts, season and Oct. 1 fiscal-year crossing, and the supported rate vintages. It stops short of describing output shape or what happens on unmatched locations or out-of-range dates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the computation logic front-loaded and the coverage window stated last as a boundary condition; there is no filler. The nested parentheticals in the first sentence make it dense, but each clause carries computation-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should convey what comes back — a single total, an itemized lodging/M&IE breakdown, or per-day lines — and it does not. It also omits error behavior for dates outside the supported fiscal years or unresolvable locations, which matters for a tool whose correctness hinges on rate lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all six parameters, establishing a baseline of 3. The description adds some interpretive value by explaining that meals_provided is deducted at the GSA breakdown amounts and that dates are evaluated per night/day across seasons, but it says nothing about how zip/city/state are resolved or prioritized beyond the schema's 'best match' note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('Calculates') and a precisely scoped resource ('maximum federal per diem for a business trip'), enumerating the components computed: lodging per night, M&IE per day with proration, and meal deductions. It is clearly distinct from the getter-style siblings (get_per_diem_rates, get_mileage_rate), but it never names or contrasts those siblings explicitly, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the FY2026/FY2027 and Oct. 1, 2025–Sept. 30, 2027 window functions as an eligibility boundary, which is useful. However, there is no explicit 'use this instead of get_per_diem_rates when...' guidance and no stated behavior for trips outside that window, so the agent must infer routing and edge handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_high_low_per_diemIRS high-low per diem rates and high-cost localitiesARead-onlyIdempotentInspect
Returns the IRS high-low substantiation method rates for a date and whether a city is a high-cost locality then: from Oct. 1, 2026 $329 high / $230 low with $86 / $74 treated as meals (Notice 2026-60); Oct. 1, 2025 - Sept. 30, 2026 $319 / $225 (Notice 2025-54). Also the transportation industry M&IE ($80 CONUS, $86 OCONUS) and the $5 incidental-expenses-only rate. Checks the 91 FY2027 high-cost localities and their seasonal portions (e.g. Tucson added, Panama City removed).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City or county to test against the high-cost list. | |
| date | No | Travel date. Default today (YYYY-MM-DD). | |
| state | No | 2-letter state code or state name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and non-open-world, so the safety profile is covered. The description goes well beyond that by disclosing effective-date windows (Oct. 1, 2026 onward vs. Oct. 1, 2025 – Sept. 30, 2026), the governing IRS notices, the transportation-industry M&IE rates, the $5 incidental-only rate, and the size of the high-cost locality list including seasonal portions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, which is good, but the remainder is a dense run-on of dollar figures, notice numbers, and parenthetical asides. The rate values and Notice citations are plausibly useful for answering without follow-up calls, but the packing hurts scanability and buries the high-cost-locality check mid-sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns, and it does: rate pairs, meal components, transportation M&IE, incidental rate, and a high-cost locality determination with seasonal variants. Gaps remain around behavior for unmatched cities, missing state, or dates outside the published windows, and around response shape, but the substantive business content is there.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents city, date, and state, including the YYYY-MM-DD pattern and the today-default. The description adds only indirect meaning ('for a date', 'whether a city is a high-cost locality') and never mentions the state parameter or how city+state combine for locality matching, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it returns IRS high-low substantiation rates for a date and a boolean-ish answer on whether a city is a high-cost locality. The 'high-low substantiation method' phrasing implicitly separates it from get_per_diem_rates and calculate_trip_per_diem, but no sibling is named, so the agent must infer the routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the distinctive 'high-low substantiation method' framing and by the explicit mention of checking a city against the 91 FY2027 high-cost localities. There is no 'use this instead of X when...' statement and no note about when the standard per diem tool would be preferred, leaving the sibling choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mileage_rateIRS standard mileage rates (2011-2026, incl. the July 2026 increase)ARead-onlyIdempotentInspect
Returns the official IRS standard mileage rates in cents per mile for business, medical, charity and military moving use, for a year or a specific date. Knows the mid-year 2026 change: 72.5 cents for business from Jan. 1 to June 30, 2026 (Notice 2026-10) and 76 cents from July 1, 2026 (Announcement 2026-11, fuel price increase), medical/moving 20.5 then 23.5 cents, charity 14 cents. Also returns the depreciation (basis reduction) part of the business rate (35 cents for 2026) and the FAVR / employer-vehicle maximum value ($61,700 for 2026). 2027 rates are not announced yet and the tool says so.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | A date the miles were driven; returns the rate in force that day (YYYY-MM-DD). | |
| year | No | Tax year, e.g. 2026. Default 2026. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely behavioral detail: the tool honors the mid-year 2026 split (72.5 cents through June 30, 76 cents from July 1), returns auxiliary values (35-cent depreciation component, $61,700 FAVR maximum), and explicitly reports that 2027 rates are unavailable instead of failing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The most important information – purpose, units, categories, and the mid-year caveat – is front-loaded in the first two sentences. The remaining sentences pack in many specific figures (72.5, 76, 20.5, 23.5, 14, 35, 61,700); each is useful but the density approaches list-like rather than prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so: units (cents per mile), categories, the depreciation component, and the FAVR maximum value. It also covers the edge case of unannounced future years, which is the main failure mode an agent would hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (date pattern YYYY-MM-DD, year 2011-2100, default 2026) are already documented. The description reinforces the date semantics by noting the mid-year switch, but adds little beyond what the schema fields state, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: 'Returns the official IRS standard mileage rates in cents per mile for business, medical, charity and military moving use.' That is enough for an agent to distinguish it from calculate_mileage_deduction, which computes a deduction rather than looking up statutory rates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the two lookup modes ('for a year or a specific date') and the boundary that 2027 is not yet announced, but it never explicitly tells the agent when to call this versus calculate_mileage_deduction. The when-to-use is inferable from the purpose, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_per_diem_ratesGSA per diem rates by ZIP or city (FY2026 and FY2027)ARead-onlyIdempotentInspect
Returns the official GSA federal per diem rates for a U.S. (CONUS) destination by ZIP code or city/state: maximum lodging per night by month and the meals and incidental expenses (M&IE) rate with its breakfast/lunch/dinner/incidentals breakdown and the 75% first/last-day amount. Covers FY2026 (Oct. 1, 2025 - Sept. 30, 2026) and FY2027 (from Oct. 1, 2026; standard rate $113 lodging and $68 M&IE). Data from GSA's FY2026 and FY2027 ZIP code files, so it knows rates newer than a model's training data.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit ZIP code of the destination (best match). | |
| city | No | City or county name, e.g. "Boston" or "Maricopa". | |
| date | No | Travel date; picks the fiscal year and shows that night's lodging rate (YYYY-MM-DD). | |
| state | No | 2-letter state code, e.g. MA. | |
| fiscal_year | No | Federal fiscal year (2027 = Oct. 2026 - Sept. 2027). Default: the current one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuine context beyond them: the GSA ZIP-file data source, the FY2026/FY2027 coverage with the FY2027 standard rate figures, and what fields come back. It does not say what happens when no location parameter is supplied, which matters for a 5-param, zero-required tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads the core purpose and output contents before the fiscal-year detail. It is borderline long, and the embedded '$113 lodging and $68 M&IE' figures are close to filler, but every sentence carries usable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with no output schema, the description covers data provenance, fiscal-year scope, and the shape of the result well. The remaining gap is the absent-parameter and multi-parameter behavior (all five params are optional), which an agent would need to know to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above baseline by clarifying the fiscal-year semantics ('FY2027 from Oct. 1, 2026') and framing ZIP-versus-city as alternative lookup paths that the schema only hints at. It still does not explain how zip, city, and state combine or which takes precedence when several are passed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the official GSA federal per diem rates') with the lookup key ('by ZIP code or city/state') and enumerates the returned components: monthly lodging caps, M&IE with meal breakdown, and the 75% first/last-day amount. It implicitly separates itself from the calculate_* siblings by being a rate lookup rather than a trip computation, but it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It signals the relevant window ('FY2026 ... and FY2027') and that data is fresher than training data, which implies 'use this for current rates'. However, it gives no explicit when-to-use guidance against calculate_trip_per_diem or get_high_low_per_diem, and no indication of whether a location argument is mandatory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
calculate_mileage_deduction - First observed
calculate_trip_per_diem - First observed
get_high_low_per_diem - First observed
get_mileage_rate - First observed
get_per_diem_rates
TDQS
Scored across 5 tools
The get/calculate split is clear: lookup tools retrieve rates, while calculate tools compute deductions or trip totals. The only potential confusion is between get_per_diem_rates (GSA CONUS lodging/M&IE by ZIP) and get_high_low_per_diem (IRS high-low substantiation), though the descriptions distinguish them well.
All tools follow a consistent snake_case verb_noun pattern: get_mileage_rate, calculate_mileage_deduction, get_per_diem_rates, calculate_trip_per_diem, get_high_low_per_diem. The get vs calculate distinction is used predictably.
Five tools is well-scoped for a focused IRS mileage and per diem server. Each tool covers a distinct lookup or calculation need without obvious redundancy.
Core workflows are covered: mileage rate lookup, mileage deduction calculation, GSA per diem lookup, trip per diem calculation, and IRS high-low lookup. Minor gaps remain, such as a dedicated high-low trip calculation and OCONUS/foreign per diem lookup.
Maintenance
Related MCP Connectors
Compliant per diems in one call: official US GSA, German BMF and UK HMRC rates, with a trip…
Travel allowances from bundled Polish, HMRC and GSA rate tables, with partial days and meals.
U.S. government per diem and overseas allowance rates from GSA, DTMO OCONUS and State DSSR tables.
GSA Per Diem access readiness, lodging, and meals and incidental expense rates. 7 tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying GSA Per Diem rates for travel destinations, providing daily lodging and meal allowance data from the U.S. General Services Administration API.463 npmMIT
- AlicenseBqualityDmaintenanceEnables AI assistants to answer tax compliance questions (VAT, sales tax, GST) and validate EU VAT numbers in real time via the VIES registry.25 npmMIT
- AlicenseBqualityCmaintenanceEnables AI agents to perform 22 unit conversions and common calculations such as length, weight, temperature, volume, tip, percentage, date difference, age, currency, cooking, and fuel consumption.141MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to work out the tourist, city, occupancy and hotel taxes a stay adds on top of the room price, night by night, for given dates, guests and room cost, with each figure tied to its official source and check date. It also exposes full local rules (rates, seasons, caps, exemptions) for researched places and returns links to live hotel and rental prices.Apache 2.0