U.S. government per diem and overseas allowance rates from GSA, DTMO OCONUS and State DSSR tables.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Allowances API key. Free Sandbox keys: https://www.allowancesapi.com/register
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.
Calculate POV mileage reimbursement Calculate mileage reimbursement using the official GSA rate in effect on the travel date. Provide a distance in miles and select automobile, airplane, motorcycle, or moving mileage. For automobile travel, indicate whether a government-furnished automobile was authorized and available; this determines whether the standard or reduced rate applies. If no travel date is supplied, today's date is used. The response identifies the selected rate category, rate and effective date, and the reimbursement amount rounded to the nearest cent.
One-way or total travel distance in miles, from 0.001 through 100,000.
Vehicle or travel category used to select the applicable GSA mileage rate.
Travel date used to select the effective rate. Accepts YYYY-MM-DD or YYYYMMDD; defaults to today.
Optional for automobile calculations and defaults to false. Use true when a government-furnished automobile is authorized and available; false selects the standard privately owned automobile rate.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http per-diem-allowances https://mcp.allowancesapi.com/mcp \ --header 'X-API-Key: YOUR_X_API_KEY'
Headers
X-API-Key (required): Allowances API key. Free Sandbox keys: https://www.allowancesapi.com/registerCalculate POV mileage reimbursement Calculate mileage reimbursement using the official GSA rate in effect on the travel date. Provide a distance in miles and select automobile, airplane, motorcycle, or moving mileage. For automobile travel, indicate whether a government-furnished automobile was authorized and available; this determines whether the standard or reduced rate applies. If no travel date is supplied, today's date is used. The response identifies the selected rate category, rate and effective date, and the reimbursement amount rounded to the nearest cent.
| Argument | Type | Description |
|---|---|---|
| date | any | Travel date used to select the effective rate. Accepts YYYY-MM-DD or YYYYMMDD; defaults to today. |
| distance* | number | One-way or total travel distance in miles, from 0.001 through 100,000. |
| vehicle_type* | string | Vehicle or travel category used to select the applicable GSA mileage rate. |
| government_vehicle_available | boolean | Optional for automobile calculations and defaults to false. Use true when a government-furnished automobile is authorized and available; false selects the standard privately owned automobile rate. |
{
"type": "object",
"required": [
"distance",
"vehicle_type"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"example": "2026-07-11",
"description": "Travel date used to select the effective rate. Accepts YYYY-MM-DD or YYYYMMDD; defaults to today."
},
"distance": {
"type": "number",
"title": "Distance",
"example": 125.5,
"maximum": 100000,
"multipleOf": 0.001,
"description": "One-way or total travel distance in miles, from 0.001 through 100,000.",
"exclusiveMinimum": 0
},
"vehicle_type": {
"enum": [
"automobile",
"airplane",
"motorcycle",
"moving"
],
"type": "string",
"title": "MileageCalculatorVehicleType",
"example": "automobile",
"description": "Vehicle or travel category used to select the applicable GSA mileage rate."
},
"government_vehicle_available": {
"type": "boolean",
"title": "Government Vehicle Available",
"default": false,
"example": false,
"description": "Optional for automobile calculations and defaults to false. Use true when a government-furnished automobile is authorized and available; false selects the standard privately owned automobile rate."
}
}
}Calculate a GSA CONUS trip per diem entitlement <p>Calculate estimated lodging and meals and incidental expenses (M&IE) reimbursement for a trip within the continental United States. The response provides a daily breakdown and trip totals.</p> <h3 class="text-xl">Describe the trip</h3> <ul class="list-disc"> <li>Add each temporary-duty stop in travel order, with inclusive arrival and departure dates.</li> <li>Identify each stop with a GSA destination ID or ZIP code. A stop represents the temporary-duty locality, which may differ from the hotel location.</li> <li>Optionally provide the actual nightly lodging cost and any meals that must be deducted.</li> <li>When one stop ends on the same date another begins, the arriving stop applies to that date.</li> </ul> <h3 class="text-xl">Calculation rules</h3> <ul class="list-disc"> <li>The calculator selects the GSA rate in effect for each day, including seasonal and fiscal-year changes.</li> <li>First and last travel days receive 75% of the M&IE rate; intermediate days receive 100%.</li> <li>Submitted meal deductions use the official GSA meal values while preserving the required incidental expense amount.</li> <li>Lodging reimbursement is limited to the nightly GSA cap. Any amount above the cap is reported as <code>overage</code> and is not included in the payable total.</li> </ul> <h3 class="text-xl">Important notes</h3> <ul class="list-disc"> <li>Submit only meals that you have determined must be deducted under FTR 301-11.21.</li> <li>Single-day reimbursement applies only when the traveler is in eligible travel status for more than 12 hours.</li> <li>If a lodging cost is omitted, the response still shows the nightly cap, but lodging and overall payable totals are <code>null</code>.</li> <li>The response includes the calculation version and a source fingerprint to support auditing.</li> </ul>
| Argument | Type | Description |
|---|---|---|
| stops* | array | Ordered, contiguous TDY-locality stops for the trip. |
| deductible_meals |
DSSR COLA calculator by postcode Returns the rate in percentage, the annual and the biweekly amounts of cost of living allowance (COLA) for a given DSSR postcode. Use this endpoint to automate your COLA calculations and replace the official excel file.
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| postcode* | integer | 5-digit DSSR post code (no zero-padding) |
| base_salary* | integer | Basic annual salary, excluding U.S. locality pay; including Overseas Comparability Pay. |
| family_size* | integer | The number of family members, including the FS/DoS employee/contractor |
{
"type": "object",
"required": [
"postcode",
"family_size",
"base_salary"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"postcode": {
"type": "integer",
"title": "DSSR post code",
"maximum": 99999,
"minimum": 10000,
"description": "5-digit DSSR post code (no zero-padding)"
},
"base_salary": {
"type": "integer",
"title": "Base Salary",
"minimum": 1000,
"description": "Basic annual salary, excluding U.S. locality pay; including Overseas Comparability Pay."
},
"family_size": {
"type": "integer",
"title": "Family Size",
"minimum": 1,
"description": "The number of family members, including the FS/DoS employee/contractor"
}
}
}DSSR allowances by country
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| type | array | Filter returned allowances. Unknown values are ignored.<br/>If not specified, all allowances are returned.<br/>Canonical values: cola, hardship, lqa, danger_pay, education, perdiem.<br/>Aliases accepted: cost_of_living, cost-of-living, danger, danger-pay, livingquarters. |
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"country_iso_code"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"type": {
"enum": [
"cola",
"hardship",
"lqa",
"danger_pay",
"education"
],
"type": "array",
"items": {
"type": "string"
},
"title": "Allowance type",
"description": "Filter returned allowances. Unknown values are ignored.<br/>If not specified, all allowances are returned.<br/>Canonical values: cola, hardship, lqa, danger_pay, education, perdiem.<br/>Aliases accepted: cost_of_living, cost-of-living, danger, danger-pay, livingquarters."
},
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}DSSR allowances by location name
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| type | array | Filter returned allowances. Unknown values are ignored.<br/>If not specified, all allowances are returned.<br/>Canonical values: cola, hardship, lqa, danger_pay, education, perdiem.<br/>Aliases accepted: cost_of_living, cost-of-living, danger, danger-pay, livingquarters. |
| location* | string | Location name, case insensitive |
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"location",
"country_iso_code"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"type": {
"enum": [
"cola",
"hardship",
"lqa",
"danger_pay",
"education"
],
"type": "array",
"items": {
"type": "string"
},
"title": "Allowance type",
"description": "Filter returned allowances. Unknown values are ignored.<br/>If not specified, all allowances are returned.<br/>Canonical values: cola, hardship, lqa, danger_pay, education, perdiem.<br/>Aliases accepted: cost_of_living, cost-of-living, danger, danger-pay, livingquarters."
},
"location": {
"type": "string",
"title": "Location",
"description": "Location name, case insensitive",
"openapi_examples": {
"tokyo": {
"value": "tokyo",
"summary": "Tokyo, Japan (lowercase)"
},
"partial": {
"value": "toky",
"summary": "Tokyo, Japan (partial)"
},
"adelaide": {
"value": "Adelaide",
"summary": "Adelaide, Australia"
}
}
},
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}DSSR allowances by location post code
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| type | array | Filter returned allowances. Unknown values are ignored.<br/>If not specified, all allowances are returned.<br/>Canonical values: cola, hardship, lqa, danger_pay, education, perdiem.<br/>Aliases accepted: cost_of_living, cost-of-living, danger, danger-pay, livingquarters. |
| postcode* | integer | 5-digit DSSR post code (no zero-padding) |
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"postcode",
"country_iso_code"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"type": {
"enum": [
"cola",
"hardship",
"lqa",
"danger_pay",
"education"
],
"type": "array",
"items": {
"type": "string"
},
"title": "Allowance type",
"description": "Filter returned allowances. Unknown values are ignored.<br/>If not specified, all allowances are returned.<br/>Canonical values: cola, hardship, lqa, danger_pay, education, perdiem.<br/>Aliases accepted: cost_of_living, cost-of-living, danger, danger-pay, livingquarters."
},
"postcode": {
"type": "integer",
"title": "DSSR post code",
"maximum": 99999,
"minimum": 10000,
"description": "5-digit DSSR post code (no zero-padding)"
},
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}City Pair airport and city codes List or search the three-letter codes used by GSA City Pair awards for the fiscal year of `date` (today by default), with GSA's own city, state and country labels. Awards use IATA airport codes (DCA, IAD, BWI) for most domestic pairs and metropolitan city codes (WAS, NYC, LON) for others; only GSA decides which, so resolve the code here before calling the fare lookup. Several codes can share one city label. Without `q`, every code of the fiscal year is returned, ordered by code. With `q` (3+ characters), a code matches exactly and city/country names match by substring, case-insensitively. Plan/date rules are those of the fare lookup: Sandbox and Google add-on today only; Pro the current US fiscal year; Business (including Enterprise accounts) any loaded fiscal year. Example: ```sh curl --get 'https://api.allowancesapi.com/v1/gsa/city-pairs/locations' -H 'X-API-Key: YOUR_KEY' --data-urlencode 'q=washington' ``` Labels mirror the latest imported awards table and change with it.
| Argument | Type | Description |
|---|---|---|
| q | any | Match a code exactly or a city/country name by substring; case-insensitive. Omit to list every code of the fiscal year. |
| date | any | Specific date in YYYY-MM-DD format |
{
"type": "object",
"properties": {
"q": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Q",
"examples": [
"washington",
"LON"
],
"minLength": 3,
"description": "Match a code exactly or a city/country name by substring; case-insensitive. Omit to list every code of the fiscal year."
},
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
}
}
}City Pair contract airfares Return every GSA contract award matching the airport/city code pair and date (today by default). Codes are returned in alphabetical order; fares are one-way USD and valid in either direction. Source start/end dates are inclusive; overlapping amendments are both returned. No fallback to other fiscal years or dates. Null fare categories are unavailable. Sandbox and Google add-on: today only. Pro: current US fiscal year. Business (including Enterprise accounts): any loaded fiscal year, including published future awards. Data reflects the latest imported table, not past publication snapshots. These are eligible government travelers' contract prices, not live seat availability or booking offers. Domestic fares exclude passenger facility, segment and security fees; international fares exclude taxes/fees but include fuel surcharges. Book through the agency's authorized system. [Official CPP rules and price caveats](https://www.gsa.gov/travel/plan-a-trip/transportation-airfare-rates-pov-rates/airfare-rates-city-pair-program); [fare definitions](https://www.gsa.gov/travel/plan-a-trip/transportation-airfare-rates-pov-rates/airfare-rates-city-pair-program/government-airfare-types). Example (fixed date; use Business access for dates outside the current fiscal year): ```sh curl --get 'https://api.allowancesapi.com/v1/gsa/city-pairs/ABE/ATL' -H 'X-API-Key: YOUR_KEY' -H 'X-Bypass-Cache: 1' --data-urlencode 'date=2026-10-28' --data-urlencode 'verification_url=true' ``` See the 200 response example for all result fields. Importing does not invalidate existing cached responses; use X-Bypass-Cache: 1 to verify newly imported data.
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| origin* | string | Three-letter airport or international city code; case-insensitive. No city-name expansion. |
| destination* | string |
Resolve a country name to its ISO code and list its posts
| Argument | Type | Description |
|---|---|---|
| q | any | Search by country name |
| limit | integer | |
| offset | integer |
{
"type": "object",
"properties": {
"q": {
"anyOf": [
{
"type": "string",
"minLength": 2
},
{
"type": "null"
}
],
"title": "Q",
"description": "Search by country name"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 300
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0
}
}
}Get country by ISO code
| Argument | Type | Description |
|---|---|---|
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
{
"type": "object",
"required": [
"country_iso_code"
],
"properties": {
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
}
}
}Get GSA destination metadata by ID Return the geographic metadata for one GSA destination rate area. A destination may represent a city, metropolitan area, county, group of jurisdictions, or the Standard CONUS area rather than a single municipality. `name` is GSA's short display name, while `defined_name` describes the geographic scope of the rate area. `destination_id` is GSA's numeric identifier for that rate area. Use [`GET /v1/gsa/destinations`](/docs#tag/GSA---CONUS-locations/operation/get_destinations_v1_gsa_destinations_get) to browse available destinations and find an ID. ID `0` identifies the Standard CONUS rate area. This endpoint returns destination metadata only. Use `GET /v1/gsa/perdiem/destination/{destination_id}` to retrieve the per diem rate in effect for a particular date.
| Argument | Type | Description |
|---|---|---|
| destination_id* | integer | GSA's numeric identifier for a destination rate area. Retrieve valid IDs from `GET /v1/gsa/destinations`; ID 0 is Standard CONUS. |
{
"type": "object",
"required": [
"destination_id"
],
"properties": {
"destination_id": {
"type": "integer",
"title": "Destination Id",
"description": "GSA's numeric identifier for a destination rate area. Retrieve valid IDs from `GET /v1/gsa/destinations`; ID 0 is Standard CONUS."
}
}
}List GSA destinations Return the paginated list of GSA destination rate areas and their numeric IDs. A destination is an area for which GSA publishes a per diem rate; it may represent a city, metropolitan area, county, locality, or the Standard CONUS area rather than a single municipality. Use `destination_id` with `GET /v1/gsa/perdiem/destination/{destination_id}` to retrieve the rate in effect for that destination. ID `0` identifies the Standard CONUS rate. `name` is GSA's display name, while `defined_name`, `county`, and state fields provide the geographic context needed to select the correct rate area. Results are ordered by `destination_id`. Use `offset` and `limit` to page through the list. An offset beyond the available records returns an empty list, not a 404 response.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of destinations to return. The maximum is 200. |
| offset | integer | Number of destination records to skip before returning results. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 100,
"maximum": 200,
"description": "Maximum number of destinations to return. The maximum is 200."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"description": "Number of destination records to skip before returning results."
}
}
}List DSSR locations Return DSSR locations, optionally filtered by q=<name>. The response is paginated and includes the total number of matching locations (ignoring pagination) along with the offset and limit that were applied.
| Argument | Type | Description |
|---|---|---|
| q | any | Search by name |
| limit | integer | |
| offset | integer |
{
"type": "object",
"properties": {
"q": {
"anyOf": [
{
"type": "string",
"minLength": 2
},
{
"type": "null"
}
],
"title": "Q",
"description": "Search by name"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 20
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0
}
}
}List DSSR locations by country Return all DSSR locations for a specific country using its ISO alpha-2 code (e.g., 'AF', 'DE')
| Argument | Type | Description |
|---|---|---|
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
{
"type": "object",
"required": [
"country_iso_code"
],
"properties": {
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
}
}
}Get DTMO CONUS locations # todo add filter by location Return all DTMO locations for a specific state using its US State Code (e.g., 'US-CA')
| Argument | Type | Description |
|---|---|---|
| state_iso* | string | US state code: US- followed by the postal abbreviation, e.g. US-CA for California. |
{
"type": "object",
"required": [
"state_iso"
],
"properties": {
"state_iso": {
"type": "string",
"title": "State Iso",
"examples": [
"US-AL",
"US-CA"
],
"description": "US state code: US- followed by the postal abbreviation, e.g. US-CA for California."
}
}
}Get DTMO OCONUS locations Return DTMO locations for a specific country using its ISO Code (e.g., 'AU', 'BE'). The optional `location` filter performs case-insensitive substring matching. Omitted or empty filters return all locations in the country. Nonempty input is literal, including spaces and wildcard characters. No matches returns [].
| Argument | Type | Description |
|---|---|---|
| location | any | Filter by location name |
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
{
"type": "object",
"required": [
"country_iso_code"
],
"properties": {
"location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Location",
"description": "Filter by location name"
},
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
}
}
}Get perdiem CONUS Department of Defense per diem for the continental U.S. by state code (e.g. 'TX'); Alaska, Hawaii and the territories are served by the OCONUS endpoint. Returns lodging, local and proportional meal rates, incidentals and the maximum per diem (lodging + meals + incidentals) per season. `q` filters by location name. `date` selects the rates in force on that day, `year` a fiscal year (Oct 1 to Sep 30); omit both for the current fiscal year.
| Argument | Type | Description |
|---|---|---|
| q | any | Search by location name or state/country name |
| date | any | Specific date in YYYY-MM-DD format |
| year | integer | A fiscal year starts Oct 1st, ends Sep 30th |
| limit | integer | |
| offset | integer | |
| state_iso* | string | US state code: US- followed by the postal abbreviation, e.g. US-CA for California. |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"state_iso"
],
"properties": {
"q": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Q",
"minLength": 3,
"description": "Search by location name or state/country name"
},
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"year": {
"type": "integer",
"title": "Year",
"description": "A fiscal year starts Oct 1st, ends Sep 30th",
"openapi_examples": {
"recent": {
"value": 2026
},
"historic": {
"value": 2005
}
}
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0
},
"state_iso": {
"type": "string",
"title": "State Iso",
"examples": [
"US-AL",
"US-CA"
],
"description": "US state code: US- followed by the postal abbreviation, e.g. US-CA for California."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}Get perdiem OCONUS Department of Defense per diem outside the continental U.S.: foreign countries by ISO alpha-2 code (e.g. 'PG'), and Alaska, Hawaii and U.S. territories by 'US-XX' code. Returns lodging, local and proportional meal rates, incidentals and the maximum per diem (lodging + meals + incidentals) per season. `q` filters by location name. `date` selects the rates in force on that day, `year` a fiscal year (Oct 1 to Sep 30); omit both for the current fiscal year.
| Argument | Type | Description |
|---|---|---|
| q | any | Search by location name or state/country name |
| date | any | Specific date in YYYY-MM-DD format |
| year | integer | A fiscal year starts Oct 1st, ends Sep 30th |
| limit | integer | |
| offset | integer | |
| oconus_iso_code* | string | Foreign country ISO 3166-1 alpha-2 code (e.g. BE), or one of the OCONUS state codes US-AK, US-HI, US-PR, US-GU, US-VI, US-AS, US-MP, US-UM. Resolve a country name to its code with get_countries (q=name). |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
FEMA-listed property by FEMA ID Return the property registered under a FEMA ID, or 404 when the ID is not on the list. The Hotel and Motel Fire Safety Act of 1990 requires federal travelers to stay at a property on FEMA's Hotel and Motel National Master List to be reimbursed for lodging. Each property on the list has a FEMA ID. FEMA publishes the current list only; `as_of` is the date of the snapshot the results come from. This endpoint returns no rates: combine it with the GSA per diem lookups for the lodging ceiling.
| Argument | Type | Description |
|---|---|---|
| fema_id* | string | FEMA ID of the property as printed on the Hotel and Motel National Master List, two letters followed by digits. Case-insensitive. |
{
"type": "object",
"required": [
"fema_id"
],
"properties": {
"fema_id": {
"type": "string",
"title": "Fema Id",
"examples": [
"VA6026"
],
"description": "FEMA ID of the property as printed on the Hotel and Motel National Master List, two letters followed by digits. Case-insensitive."
}
}
}FEMA-listed properties by state, optionally filtered by city Return the properties on the list in a state, ordered by city then name and paginated with `offset` and `limit` (50 by default, 200 at most); `total` is the number of matches across all pages. The optional `city` is matched case-insensitively as a partial name, so `york` matches New York and Yorktown. The state path accepts the 50 states, DC and the territories FEMA lists (AS, GU, MP, PR, PW, VI); other codes return 404. A city that matches nothing returns an empty `results` list. The Hotel and Motel Fire Safety Act of 1990 requires federal travelers to stay at a property on FEMA's Hotel and Motel National Master List to be reimbursed for lodging. Each property on the list has a FEMA ID. FEMA publishes the current list only; `as_of` is the date of the snapshot the results come from. This endpoint returns no rates: combine it with the GSA per diem lookups for the lodging ceiling.
| Argument | Type | Description |
|---|---|---|
| city | any | Case-insensitive partial match on the city name. |
| limit | integer | Properties per page, 200 at most. |
| offset | integer | Number of properties to skip. |
| state_iso* | string | 2-digits US State ISO Code, format XX |
{
"type": "object",
"required": [
"state_iso"
],
"properties": {
"city": {
"anyOf": [
{
"type": "string",
"minLength": 2
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"Alexandria"
],
"description": "Case-insensitive partial match on the city name."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "Properties per page, 200 at most."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Number of properties to skip."
},
"state_iso": {
"type": "string",
"title": "State Iso",
"examples": [
"AL",
"CA"
],
"description": "2-digits US State ISO Code, format XX"
}
}
}FEMA-listed properties by ZIP code Return every property on the list in a US ZIP code, ordered by name. The path accepts a five-digit ZIP or ZIP+4, normalized to the first five digits. A known ZIP with no listed property returns an empty `results` list; an unknown ZIP returns 404. The Hotel and Motel Fire Safety Act of 1990 requires federal travelers to stay at a property on FEMA's Hotel and Motel National Master List to be reimbursed for lodging. Each property on the list has a FEMA ID. FEMA publishes the current list only; `as_of` is the date of the snapshot the results come from. This endpoint returns no rates: combine it with the GSA per diem lookups for the lodging ceiling.
| Argument | Type | Description |
|---|---|---|
| zipcode* | string | US ZIP (12345) or ZIP+4 (12345-6789) |
{
"type": "object",
"required": [
"zipcode"
],
"properties": {
"zipcode": {
"type": "string",
"title": "Zipcode",
"description": "US ZIP (12345) or ZIP+4 (12345-6789)",
"openapi_examples": {
"normal": {
"value": "12084",
"summary": "Five digits postcode"
},
"zip_plus_four": {
"value": "12084-1234",
"summary": "Zip+4 format"
}
}
}
}
}GSA Fleet vehicle leasing rates by SIN Return the GSA Fleet vehicle leasing rates (monthly lease rate and rate per mile) for the vehicle type identified by its Standard Item Number (SIN), from the standard (US) or europe rate schedule. If year is not specified, the current fiscal year's rates will be returned. Rates are available from fiscal year 2022.
| Argument | Type | Description |
|---|---|---|
| sin* | string | Standard Item Number (SIN) identifying a GSA Fleet leased vehicle type, case insensitive. |
| year | any | |
| rate_type* | string | The GSA Fleet rate schedule: 'standard' covers vehicles leased in the United States, 'europe' covers vehicles leased in Europe. |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"rate_type",
"sin"
],
"properties": {
"sin": {
"type": "string",
"title": "GSA Fleet SIN",
"description": "Standard Item Number (SIN) identifying a GSA Fleet leased vehicle type, case insensitive."
},
"year": {
"anyOf": [
{
"type": "integer",
"description": "A fiscal year starts Oct 1st, ends Sep 30th",
"openapi_examples": {
"recent": {
"value": 2026
},
"historic": {
"value": 2005
}
}
},
{
"type": "null"
}
],
"title": "Year"
},
"rate_type": {
"enum": [
"standard",
"europe"
],
"type": "string",
"title": "Fleet rate schedule",
"description": "The GSA Fleet rate schedule: 'standard' covers vehicles leased in the United States, 'europe' covers vehicles leased in Europe."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}GSA per diem rate by destination Return the GSA per diem rate in effect for a specific GSA destination on a given date. A destination is a rate area defined by GSA and may represent a city, metropolitan area, county, or the Standard CONUS area. It is not necessarily a single municipality. `destination_id` is the numeric identifier assigned to that GSA rate area in the source data. Use [`GET /v1/gsa/destinations`](/docs#tag/GSA---CONUS-locations/operation/get_destinations_v1_gsa_destinations_get) to browse the available destinations and find the ID for the location you need. Destination ID `0` represents the Standard CONUS rate. The response contains the seasonal lodging rate applicable on the requested date and the daily meals and incidental expenses (M&IE) rate. When `date` is omitted, today's rate is returned. Set `verification_url=true` to include the corresponding official GSA lookup URL.
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| destination_id* | integer | GSA's numeric identifier for a rate area. Retrieve valid IDs from `GET /v1/gsa/destinations`; ID 0 is the Standard CONUS rate. |
| verification_url | boolean | Include the official GSA per diem lookup URL in the response when true. |
{
"type": "object",
"required": [
"destination_id"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"destination_id": {
"type": "integer",
"title": "Destination Id",
"description": "GSA's numeric identifier for a rate area. Retrieve valid IDs from `GET /v1/gsa/destinations`; ID 0 is the Standard CONUS rate."
},
"verification_url": {
"type": "boolean",
"title": "Verification Url",
"default": false,
"description": "Include the official GSA per diem lookup URL in the response when true."
}
}
}GSA per diem rates by state and date Return every GSA destination rate in a state that applies on a specific date. Each result contains the seasonal lodging rate in effect on that date and the daily meals and incidental expenses (M&IE) rate. When `date` is omitted, today's rates are returned. Use the optional `location` parameter to filter by a GSA destination or location-defined name. Matching is case-insensitive and accepts partial names. If the state has no non-standard destination rate, the Standard CONUS rate is returned. This endpoint covers GSA CONUS rates; unsupported or unknown state codes return 404. Set `verification_url=true` to include the corresponding official GSA state lookup URL.
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| location | any | Optional case-insensitive partial match against the GSA destination name or location-defined name. |
| state_iso* | string | Two-letter US postal abbreviation for the state or District of Columbia. |
| verification_url | boolean | Include the official GSA state lookup URL in the response when true. |
{
"type": "object",
"required": [
"state_iso"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Location",
"description": "Optional case-insensitive partial match against the GSA destination name or location-defined name."
},
"state_iso": {
"type": "string",
"title": "State Iso",
"description": "Two-letter US postal abbreviation for the state or District of Columbia."
},
"verification_url": {
"type": "boolean",
"title": "Verification Url",
"default": false,
"description": "Include the official GSA state lookup URL in the response when true."
}
}
}GSA per diem rates by state and fiscal year Return every GSA destination rate in a state for a US fiscal year. Each result contains the lodging rate for every month and the daily meals and incidental expenses (M&IE) rate. A US fiscal year begins October 1 of the preceding calendar year and ends September 30. Use the optional `location` parameter to filter destinations by their GSA destination or location-defined name. Matching is case-insensitive and accepts partial names. Set `verification_url=true` to include the corresponding official GSA state lookup URL.
| Argument | Type | Description |
|---|---|---|
| year* | integer | Four-digit US fiscal year. Fiscal year 2026 runs from 2025-10-01 through 2026-09-30. |
| location | any | Optional case-insensitive partial match against the GSA destination name or location-defined name. |
| state_iso* | string | Two-letter US postal abbreviation for the state or District of Columbia. |
| verification_url | boolean | Include the official GSA state lookup URL in the response when true. |
{
"type": "object",
"required": [
"state_iso",
"year"
],
"properties": {
"year": {
"type": "integer",
"title": "Year",
"description": "Four-digit US fiscal year. Fiscal year 2026 runs from 2025-10-01 through 2026-09-30."
},
"location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Location",
"description": "Optional case-insensitive partial match against the GSA destination name or location-defined name."
},
"state_iso": {
"type": "string",
"title": "State Iso",
"description": "Two-letter US postal abbreviation for the state or District of Columbia."
},
"verification_url": {
"type": "boolean",
"title": "Verification Url",
"default": false,
"description": "Include the official GSA state lookup URL in the response when true."
}
}
}GSA per diem rates by ZIP code and date Return every GSA destination rate associated with a US ZIP code that applies on a specific date. Each result contains the seasonal lodging rate in effect on that date and the daily meals and incidental expenses (M&IE) rate. When `date` is omitted, today's rates are returned. A ZIP code can map to more than one GSA destination. When that happens, `results` contains every applicable rate, and the API does not choose one automatically. Use the returned county or a geocoder to determine which destination applies to the travel location. If a known ZIP code has no non-standard destination, the Standard CONUS rate is returned. The path accepts either a five-digit ZIP code or ZIP+4. ZIP+4 values are normalized to their first five digits. Set `verification_url=true` to include the corresponding official GSA lookup URL.
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| zipcode* | string | Five-digit US ZIP code, or ZIP+4. ZIP+4 values are normalized to the first five digits. |
| verification_url | boolean | Include the official GSA per diem lookup URL in the response when true. |
{
"type": "object",
"required": [
"zipcode"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"zipcode": {
"type": "string",
"title": "Zipcode",
"description": "Five-digit US ZIP code, or ZIP+4. ZIP+4 values are normalized to the first five digits."
},
"verification_url": {
"type": "boolean",
"title": "Verification Url",
"default": false,
"description": "Include the official GSA per diem lookup URL in the response when true."
}
}
}GSA per diem rates by ZIP code and fiscal year Return the GSA lodging rates for every month of a US fiscal year and the daily meals and incidental expenses (M&IE) rate associated with a ZIP code. A US fiscal year begins October 1 of the preceding calendar year and ends September 30. A ZIP code can map to more than one GSA destination. When that happens, `results` contains every applicable rate. The API does not choose a destination automatically; use the returned county or a geocoder to determine which rate applies. ZIP codes without a non-standard destination return the Standard CONUS rate. ZIP+4 input is accepted and normalized to its first five digits. Set `verification_url=true` to include the corresponding official GSA lookup URL.
| Argument | Type | Description |
|---|---|---|
| year* | integer | Four-digit US fiscal year. Fiscal year 2026 runs from 2025-10-01 through 2026-09-30. |
| zipcode* | string | Five-digit US ZIP code, or ZIP+4. ZIP+4 values are normalized to the first five digits. |
| verification_url | boolean | Include the official GSA ZIP-code lookup URL in the response when true. |
{
"type": "object",
"required": [
"zipcode",
"year"
],
"properties": {
"year": {
"type": "integer",
"title": "Year",
"description": "Four-digit US fiscal year. Fiscal year 2026 runs from 2025-10-01 through 2026-09-30."
},
"zipcode": {
"type": "string",
"title": "Zipcode",
"description": "Five-digit US ZIP code, or ZIP+4. ZIP+4 values are normalized to the first five digits."
},
"verification_url": {
"type": "boolean",
"title": "Verification Url",
"default": false,
"description": "Include the official GSA ZIP-code lookup URL in the response when true."
}
}
}Latest data publications
No arguments.
{
"type": "object",
"properties": {}
}M&IE meal breakdowns Return how daily M&IE totals break down into breakfast, lunch, dinner and incidental expenses, as in effect on the given date. The CONUS table breaks down the five standard CONUS M&IE tiers and is returned by default. Set region=oconus for the generic DTMO/DSSR M&IE total table. If date is not specified, today's breakdowns will be returned.
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| total | any | Filter by daily M&IE total in USD |
| region | string | Breakdown table to return; defaults to CONUS |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"total": {
"anyOf": [
{
"type": "integer",
"minimum": 1
},
{
"type": "null"
}
],
"title": "Total",
"description": "Filter by daily M&IE total in USD"
},
"region": {
"enum": [
"conus",
"oconus"
],
"type": "string",
"title": "MieBreakdownRegion",
"default": "conus",
"description": "Breakdown table to return; defaults to CONUS"
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}POV mileage reimbursement rates Return the privately owned vehicle (POV) mileage reimbursement rates in effect on the given date. If date is not specified, today's rates will be returned.
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| type | any | Filter by mileage type |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"type": {
"anyOf": [
{
"enum": [
"airplane",
"automobile",
"government_furnished_automobile",
"motorcycle",
"moving"
],
"type": "string",
"title": "MileageType"
},
{
"type": "null"
}
],
"title": "Type",
"description": "Filter by mileage type"
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}GS locality pay areas, optionally by county or city List the locality pay areas of the latest pay year, with the code to use on the pay endpoints. The optional `location` keeps the areas whose name contains every word, and the areas of the counties and cities with that name. `state` narrows `location` to one state and has no effect without it. County and city names must match exactly, ignoring case; a trailing `county` is optional. A place outside every listed area returns Rest of U.S. (`RUS`). Area names keep matching on any word they contain. `matched_places` lists the counties and cities behind each result. A place name can return several areas: the same name can exist in several states, which `state` narrows, and a city can span several areas, in which case all of them are returned and the official duty station decides. City data is not published by OPM, so for payroll use `/v1/opm/localities/county/{fips}`. An empty result does not mean Rest of U.S.: the name may be misspelled, and U.S. territories are not covered.
| Argument | Type | Description |
|---|---|---|
| state | any | Restrict `location` to one state. |
| location | any | County, city or locality area name. |
{
"type": "object",
"properties": {
"state": {
"anyOf": [
{
"type": "string",
"examples": [
"AL",
"CA"
],
"description": "2-digits US State ISO Code, format XX"
},
{
"type": "null"
}
],
"title": "State",
"description": "Restrict `location` to one state."
},
"location": {
"anyOf": [
{
"type": "string",
"minLength": 2
},
{
"type": "null"
}
],
"title": "Location",
"examples": [
"evanston"
],
"description": "County, city or locality area name."
}
}
}GS locality pay area of a county Return the locality pay area of a county for the latest pay year, using OPM's own definitions. A county that OPM doesn't list under an area falls under Rest of U.S. (`RUS`), and every county in Alaska or Hawaii returns that state's area. Returns 404 for an unknown code and for a Connecticut planning region, as OPM defines Connecticut by its eight legacy counties. U.S. territories fall under Rest of U.S. in OPM's definitions, but their county codes are not available here and return 404. Burlington County, NJ (`34005`) returns the Philadelphia area, while three military sites inside it (Fort Dix, Joint Base McGuire-Dix-Lakehurst and McGuire Air Force Base) belong to the New York area.
| Argument | Type | Description |
|---|---|---|
| fips* | string | Five-digit county FIPS code: two for the state and three for the county. |
{
"type": "object",
"required": [
"fips"
],
"properties": {
"fips": {
"type": "string",
"title": "Fips",
"pattern": "^\\d{5}$",
"examples": [
"17031"
],
"description": "Five-digit county FIPS code: two for the state and three for the county."
}
}
}GS pay by locality code Return the latest pay table of a locality pay area, ordered by grade and step, or 404 for an unknown code. `grade` and `step` narrow the rates. Use `GS` for the base table without locality pay, and `RUS` for Rest of U.S.
| Argument | Type | Description |
|---|---|---|
| step | any | Return only this step, 1 to 10. |
| grade | any | Return only this GS grade, 1 to 15. |
| locality_code* | string | OPM locality pay area code, from /v1/opm/localities, or GS for the base table. Case-insensitive. |
{
"type": "object",
"required": [
"locality_code"
],
"properties": {
"step": {
"anyOf": [
{
"type": "integer",
"maximum": 10,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Step",
"description": "Return only this step, 1 to 10."
},
"grade": {
"anyOf": [
{
"type": "integer",
"maximum": 15,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Grade",
"description": "Return only this GS grade, 1 to 15."
},
"locality_code": {
"type": "string",
"title": "Locality Code",
"examples": [
"CHI"
],
"description": "OPM locality pay area code, from /v1/opm/localities, or GS for the base table. Case-insensitive."
}
}
}DSSR per diem by country
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"country_iso_code"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}DSSR per diem by location name
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| location* | string | Location name, case insensitive |
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"location",
"country_iso_code"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"location": {
"type": "string",
"title": "Location",
"description": "Location name, case insensitive",
"openapi_examples": {
"tokyo": {
"value": "tokyo",
"summary": "Tokyo, Japan (lowercase)"
},
"partial": {
"value": "toky",
"summary": "Tokyo, Japan (partial)"
},
"adelaide": {
"value": "Adelaide",
"summary": "Adelaide, Australia"
}
}
},
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}DSSR per diem by location post code
| Argument | Type | Description |
|---|---|---|
| date | any | Specific date in YYYY-MM-DD format |
| postcode* | integer | 5-digit DSSR post code (no zero-padding) |
| country_iso_code* | string | ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name). |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"postcode",
"country_iso_code"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"postcode": {
"type": "integer",
"title": "DSSR post code",
"maximum": 99999,
"minimum": 10000,
"description": "5-digit DSSR post code (no zero-padding)"
},
"country_iso_code": {
"type": "string",
"title": "Country Iso Code",
"examples": [
"BE",
"JP",
"KE"
],
"description": "ISO 3166-1 alpha-2 country code, e.g. PG for Papua New Guinea; ZZ stands for 'Other Foreign Localities', not a country. Resolve a country name to its code with get_countries (q=name)."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}Get User
No arguments.
{
"type": "object",
"properties": {}
}Get ZIP code metadata Look up every state associated with a US ZIP code. Most ZIP codes belong to one state, but some cross state boundaries. In that case, `states` contains every matching state; the API does not choose one on the caller's behalf. This is a geographic metadata endpoint; it does not return GSA per diem rates. Use `/v1/gsa/perdiem/zipcode/{zipcode}` for rates. The path accepts either a five-digit ZIP code or ZIP+4. ZIP+4 values are normalized to their first five digits before lookup, and the normalized five-digit ZIP is returned in the response. Leading zeroes are significant, so ZIP codes must be sent as strings.
| Argument | Type | Description |
|---|---|---|
| zipcode* | string | US ZIP (12345) or ZIP+4 (12345-6789) |
{
"type": "object",
"required": [
"zipcode"
],
"properties": {
"zipcode": {
"type": "string",
"title": "Zipcode",
"description": "US ZIP (12345) or ZIP+4 (12345-6789)",
"openapi_examples": {
"normal": {
"value": "12084",
"summary": "Five digits postcode"
},
"zip_plus_four": {
"value": "12084-1234",
"summary": "Zip+4 format"
}
}
}
}
}Search by location name Department of Defense per diem by location name (e.g. 'Kabul') or country/state name (e.g. 'Afghanistan'), across CONUS and OCONUS. `date` selects the rates in force on that day, `year` a fiscal year (Oct 1 to Sep 30); omit both for the current fiscal year.
| Argument | Type | Description |
|---|---|---|
| q | any | Search by location name or state/country name |
| date | any | Specific date in YYYY-MM-DD format |
| year | integer | A fiscal year starts Oct 1st, ends Sep 30th |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"properties": {
"q": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Q",
"minLength": 3,
"description": "Search by location name or state/country name"
},
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"year": {
"type": "integer",
"title": "Year",
"description": "A fiscal year starts Oct 1st, ends Sep 30th",
"openapi_examples": {
"recent": {
"value": 2026
},
"historic": {
"value": 2005
}
}
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}Search FEMA-listed properties by name and town Return the properties whose name or city contains every word of `q`, case-insensitively, as a plain substring: `courtyard dallas` matches Courtyard properties in Dallas, `mint house alexandria` the Mint House in Alexandria. There is no fuzzy matching, so `hampton inn` does not find "Hampton by Hilton". Words of one character are ignored. `state` narrows the search to one state or territory (404 for a code FEMA does not list). Results are ordered by name then city and paginated with `offset` and `limit` (50 by default, 200 at most); `total` counts every match. No match returns an empty `results` list. The Hotel and Motel Fire Safety Act of 1990 requires federal travelers to stay at a property on FEMA's Hotel and Motel National Master List to be reimbursed for lodging. Each property on the list has a FEMA ID. FEMA publishes the current list only; `as_of` is the date of the snapshot the results come from. This endpoint returns no rates: combine it with the GSA per diem lookups for the lodging ceiling.
| Argument | Type | Description |
|---|---|---|
| q* | string | Words to find in the property name or city, all required, case-insensitive. |
| limit | integer | Properties per page, 200 at most. |
| state | any | Restrict the search to one state or territory. |
| offset | integer | Number of properties to skip. |
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"title": "Q",
"examples": [
"mint house alexandria"
],
"minLength": 3,
"description": "Words to find in the property name or city, all required, case-insensitive."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "Properties per page, 200 at most."
},
"state": {
"anyOf": [
{
"type": "string",
"examples": [
"AL",
"CA"
],
"description": "2-digits US State ISO Code, format XX"
},
{
"type": "null"
}
],
"title": "State",
"description": "Restrict the search to one state or territory."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Number of properties to skip."
}
}
}Search GS pay by locality area Return the latest pay tables whose locality area matches every word of `q`: each word must be contained in the area name, case-insensitively, or equal its code. `grade` and `step` narrow the rates. No match returns an empty `results` list. Matching only looks at OPM's locality area names, not at the counties and towns each area covers: `naperville` finds Chicago because the name contains it, while a town missing from the names returns nothing. No match does not mean the place falls under Rest of U.S.
| Argument | Type | Description |
|---|---|---|
| q* | string | Words to find in the locality area name or code, all required, case-insensitive. |
| step | any | Return only this step, 1 to 10. |
| grade | any | Return only this GS grade, 1 to 15. |
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"title": "Q",
"examples": [
"chicago"
],
"minLength": 2,
"description": "Words to find in the locality area name or code, all required, case-insensitive."
},
"step": {
"anyOf": [
{
"type": "integer",
"maximum": 10,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Step",
"description": "Return only this step, 1 to 10."
},
"grade": {
"anyOf": [
{
"type": "integer",
"maximum": 15,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Grade",
"description": "Return only this GS grade, 1 to 15."
}
}
}Search DSSR Per Diem by country/location name Search globally by case-insensitive substring of a location or country name. The date selects effective and seasonal rates and defaults to today. The response effective_date is the first day of the selected month. Missing, blank, or fewer than three characters after trimming returns HTTP 422. A valid search with no matching rates returns HTTP 404.
| Argument | Type | Description |
|---|---|---|
| q* | string | Required case-insensitive substring of a location or country name; at least three characters after trimming. |
| date | any | Specific date in YYYY-MM-DD format |
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"title": "Q",
"minLength": 3,
"description": "Required case-insensitive substring of a location or country name; at least three characters after trimming."
},
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
| array |
| Sparse caller-determined meal deductions, keyed by trip date. |
| verification_url | boolean | Include deduplicated official GSA verification URLs when true. |
{
"type": "object",
"required": [
"stops"
],
"properties": {
"stops": {
"type": "array",
"items": {
"type": "object",
"title": "GSATripStopRequest",
"required": [
"location",
"arrival_date",
"departure_date"
],
"properties": {
"location": {
"type": "object",
"title": "GSATripLocationRequest",
"properties": {
"zipcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Zipcode",
"examples": [
"20001",
"20001-1234"
],
"description": "Five-digit US ZIP or ZIP+4. ZIP+4 is normalized to five digits."
},
"destination_id": {
"anyOf": [
{
"type": "integer",
"minimum": 0
},
{
"type": "null"
}
],
"title": "Destination Id",
"examples": [
123
],
"description": "GSA destination identifier. Destination 0 is Standard CONUS."
}
},
"description": "TDY locality for the stop; not merely the hotel location.",
"additionalProperties": false
},
"arrival_date": {
"type": "string",
"title": "Arrival Date",
"format": "date",
"description": "First calendar date owned by this stop."
},
"departure_date": {
"type": "string",
"title": "Departure Date",
"format": "date",
"description": "Shared boundary/return date; the arriving next stop owns a transition date."
},
"lodging_cost_per_night": {
"anyOf": [
{
"type": "number",
"maximum": 100000,
"minimum": 0
},
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Lodging Cost Per Night",
"examples": [
250
],
"description": "Optional actual room cost applied to every lodging night in this stop. Must be a JSON number with no more than two decimal places."
}
},
"additionalProperties": false
},
"title": "Stops",
"maxItems": 50,
"minItems": 1,
"description": "Ordered, contiguous TDY-locality stops for the trip."
},
"deductible_meals": {
"type": "array",
"items": {
"type": "object",
"title": "GSATripDeductibleMealsRequest",
"required": [
"date",
"meals"
],
"properties": {
"date": {
"type": "string",
"title": "Date",
"format": "date",
"description": "Inclusive trip date on which meals are deducted."
},
"meals": {
"type": "array",
"items": {
"enum": [
"breakfast",
"lunch",
"dinner"
],
"type": "string",
"title": "GSATripMeal"
},
"title": "Meals",
"minItems": 1,
"description": "Non-empty unique breakfast/lunch/dinner deductions for the date."
}
},
"additionalProperties": false
},
"title": "Deductible Meals",
"description": "Sparse caller-determined meal deductions, keyed by trip date."
},
"verification_url": {
"type": "boolean",
"title": "Verification Url",
"default": false,
"description": "Include deduplicated official GSA verification URLs when true."
}
}
}| Three-letter airport or international city code; case-insensitive. No city-name expansion. |
| verification_url | boolean | If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing. |
{
"type": "object",
"required": [
"origin",
"destination"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"origin": {
"type": "string",
"title": "Origin",
"examples": [
"ABE",
"LON"
],
"description": "Three-letter airport or international city code; case-insensitive. No city-name expansion."
},
"destination": {
"type": "string",
"title": "Destination",
"examples": [
"ABE",
"LON"
],
"description": "Three-letter airport or international city code; case-insensitive. No city-name expansion."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}{
"type": "object",
"required": [
"oconus_iso_code"
],
"properties": {
"q": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Q",
"minLength": 3,
"description": "Search by location name or state/country name"
},
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "Specific date in YYYY-MM-DD format"
},
"year": {
"type": "integer",
"title": "Year",
"description": "A fiscal year starts Oct 1st, ends Sep 30th",
"openapi_examples": {
"recent": {
"value": 2026
},
"historic": {
"value": 2005
}
}
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0
},
"oconus_iso_code": {
"type": "string",
"title": "Oconus Iso Code",
"examples": [
"US-AK",
"BE"
],
"description": "Foreign country ISO 3166-1 alpha-2 code (e.g. BE), or one of the OCONUS state codes US-AK, US-HI, US-PR, US-GU, US-VI, US-AS, US-MP, US-UM. Resolve a country name to its code with get_countries (q=name)."
},
"verification_url": {
"type": "boolean",
"title": "Verification URL",
"default": false,
"description": "If 'True', will include a verification url in the payload, pointing to the official government source. This is useful to crosscheck that the API returns the proper data and for auditing."
}
}
}