Skip to main content
Glama
cliwant

mcp-sam-gov

gsa_perdiem_rates

Read-only

Look up U.S. federal travel per-diem rates by city/state or ZIP code to find maximum lodging and meals & incidentals reimbursement ceilings for official government travel.

Instructions

Look up GSA Federal Travel PER-DIEM rates — the max lodging + Meals & Incidental Expenses (M&IE) reimbursement ceilings for official U.S. government travel (api.gsa.gov /travel/perdiem/v2, keyed — DATA_GOV_API_KEY or the shared DEMO_KEY). Input: EITHER city + state (2-letter) OR zip (5-digit) — supplying BOTH or NEITHER → invalid_input with 0 fetch; optional year (default: current federal fiscal year). Returns { rates:[{ city, county, state, zip, year, fiscalYear (= year, the U.S. FY: Oct 2026 = FY2027), isOconus, standardRate, mealsUsd, monthlyLodgingUsd:[{ month (1-12), monthName, lodgingUsd }] }] } + honest _meta. HONESTY: lodgingUsd is the MAX nightly lodging ceiling for that month — VARIES SEASONALLY (hence a per-month array); mealsUsd is the daily M&IE ceiling; both are integer US dollars, null-when-withheld (NEVER 0 — genuine 0 preserved). standardRate/isOconus are booleans coerced from the API's string 'true'/'false' (unrecognized → null, never fabricated false); months array preserved AS-IS (never padded to 12). API returns COMPLETE rate set (no pagination) → totalAvailable = row count, complete:true. Genuine no-match → honest empty; errors field non-null → invalid_input; 429 (DEMO_KEY ~10 req/hr) → rate_limited THROWS; set DATA_GOV_API_KEY (free, api.data.gov/signup) for 1000/hr. 5xx/timeout → upstream_unavailable THROWS; 200 non-JSON → schema_drift. Key rides ONLY in the X-Api-Key header.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipNoA 5-digit ZIP code (e.g. '20001'). The alternative lookup mode to city+state. Validated ^\d{5}$. Use EITHER zip OR (city + state) — not both.
cityNoThe city name (e.g. 'Washington', 'San Francisco'). Requires `state`. Validated ^[A-Za-z .'\-]{1,60}$. Use EITHER (city + state) OR zip — not both.
yearNoU.S. federal fiscal year number (Oct 1–Sep 30). Default: current FY at call time. IMPORTANT: October 2026 = FY2027; September 2026 = FY2026. To get October 2026 rates, pass year='2027'. Validated ^d{4}$ (it rides in the request path).
stateNoThe 2-letter state/territory code (e.g. 'DC', 'CA'). Required with `city`. Validated ^[A-Za-z]{2}$.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.16.0
    • changedInput schema / properties / year / description
      Previous value: -"The per-diem fiscal year (default: the current U.S. federal fiscal year, computed at call time — GSA sets rates per FY, Oct 1–Sep 30). Validated ^\\d{4}$ (it rides in the request path)."New value: +"U.S. federal fiscal year number (Oct 1–Sep 30). Default: current FY at call time. IMPORTANT: October 2026 = FY2027; September 2026 = FY2026. To get October 2026 rates, pass year='2027'. Validated ^d{4}$ (it rides in the request path)."
  2. Addedv1.12.0

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description thoroughly discloses failure modes (invalid_input, rate_limited, upstream_unavailable, schema_drift), API-key requirements and header placement, absence of pagination, and coercion rules for booleans and nulls. This far exceeds what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense and front-loaded, starting with purpose and input modes before edge cases. Nearly every clause earns its place, though it is verbose and repeats the 'honest' concept multiple times.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully documents the return shape, including the rates array, monthly lodging, null-when-withheld behavior, and error semantics. Nothing needed to call or interpret the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all four parameters, so the baseline is 3. The description adds meaningful extras: the year default, fiscal-year boundary behavior, the exclusive-or constraint between zip and city+state, and the fact that the key rides only in the X-Api-Key header.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Look up GSA Federal Travel PER-DIEM rates' and explains the meaning of the returned values. It does not explicitly contrast itself with sibling tools, but the resource and output shape make the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly prescribes the two valid input modes (city+state OR zip), forbids supplying both or neither, and documents the optional year parameter with its default. It does not explicitly name alternative tools for when per-diem rates are not the need, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools