canonical: https://jentic.com/apis/opentaxrate.com/opentaxrate

# OpenTaxRate API

The OpenTaxRate API returns the sales tax rate at a US street address, built from the states' own published data. Give an address as one line or as state, street, city, and zip, optionally with a date, and it returns the combined rate as a decimal split into the state's part, the local part, and the individual taxes that make it up, along with how the address was matched. Product codes such as food.grocery or software.saas add taxability for what was sold, and a plain-words description can be classified against those codes when a key is supplied. A coverage endpoint reports, state by state, how addresses are placed and which data is loaded.

## For AI agents

Look up the US sales tax rate at a street address from states' published data, broken into state and local parts, with taxability for product codes like food.grocery or software.saas.

## Scope

Does not file returns, record transactions, or cover taxes outside the US. Use for looking up US sales tax rates and product taxability at an address only.

## Capabilities

- Look up the combined US sales tax rate at a street address, split into stateRate, localRate, and the individual taxes that make it up
- Pass an address as one line or as state, street, city, and zip fields, with an optional date for a past or future rate
- Add taxability for what was sold with product codes such as food.grocery, software.saas, or service.professional.legal
- Classify a plain-words item description against the product codes when calling with an API key
- Return how the address was matched, such as street, zip4, or map, and include a geocoder trace or the published regions it falls in
- Check which states are covered and how each one places addresses

## Use cases

### AI agent quoting tax on an order

An AI checkout or invoicing agent working through Jentic searches for 'sales tax rate at an address', loads getRate, and calls it with the buyer's street, city, state, and zip plus a code for what was sold. The response gives the general rate and a taxability entry for the code, such as special_rate for groceries or exempt, so the agent can apply the right rate. If you use a key, your own Jentic One instance injects it at call time.

Example prompt: Call GET `/v1/rate` with street '400 Broad St', city Seattle, state WA, zip 98109, and code food.grocery, then return rate and the taxability entry for food.grocery

### Rate on a specific date

Tax rates change, and refunds or audits need the rate that applied when a sale happened. GET `/v1/rate` accepts a date in YYYY-MM-DD form and defaults to today when it is absent, so a reconciliation job can look up the rate for each historical order's address and date.

Example prompt: For each order, call GET `/v1/rate` with the shipping address and date set to the order date, and flag orders whose charged rate differs

### Explaining an address match

Addresses near jurisdiction lines can be ambiguous. With include=trace the response shows every point a geocoder returned and the point used, and with include=regions it lists the published transit, special district, and tax areas the address falls in. A 422 ADDRESS_NEEDS_CONFIRMATION tells the agent to ask for a better address rather than guess.

Example prompt: Call GET `/v1/rate` with the one-line address and include=trace,regions, and report the match method and the special districts listed

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/v1/rate` | Sales tax rate at an address |
| GET | `/v1/coverage` | States covered and how addresses are placed |

## Key resources

- **Address rate** — Combined rate, stateRate, localRate, rate parts, match method, and optional taxability, trace, and regions
- **Taxability** — Per product code result such as taxable, special_rate, exempt, zero_rated, conditional, or not_a_sale
- **Coverage** — Each state's address placement method, geocoders, and loaded data sources

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 60 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 100 / 100
  - Developer Experience & Jentic Compatibility: 70 / 100
  - AI-Readiness & Agent Experience: 47 / 100
  - Agent Usability: 94 / 100
  - Security: 55 / 100
  - AI Discoverability: 31 / 100
- **View full report:** https://jentic.com/apis/opentaxrate.com/opentaxrate/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring OpenTaxRate by hand means choosing between keyless per-IP limits and a key sent as a bearer token or x-api-key header, and handling 422 address-confirmation and 429 Retry-After responses. Through Jentic you install once, import OpenTaxRate from the API Directory, add your key once if you use one, and your agent calls it.
- **Permission scoping:** OpenTaxRate exposes two read operations, so a rule bounds your agent by operation: allow the rate lookup, the coverage list, or both. The address travels as query parameters, so a rule decides whether your agent may look up rates, not which addresses.
- **Credential handling:** If you use an OpenTaxRate key, it is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'sales tax rate at an address' or 'are groceries taxable here', and Jentic returns the getRate operation with its input schema, including address, zip, date, and code, so the agent calls it directly.

## Related APIs

- **TaxJar Sales Tax API** — Sales tax calculation, transactions, and nexus reporting
- **AvaTax API** — Tax engine for transactions, exemptions, and filing
- **Smarty US ZipCode API** — US ZIP code and city lookup

## FAQ

### What authentication does the OpenTaxRate API use?

Per its OpenAPI spec, a key is optional: calls may be made with no key, with the key as a bearer token, or with the same key in the x-api-key header. Without a key, lookups are limited per IP address, and the describe parameter needs a key (otherwise the API answers 403 KEY_REQUIRED). If you use a key, Jentic stores it in your own instance and attaches it at call time.

### Can the OpenTaxRate API tell me whether a product is taxable?

Yes. Pass one or more codes to GET `/v1/rate`, such as food.grocery, food.prepared, software.saas, or service.professional.legal, and the response adds a taxability entry per code with a status such as taxable, special_rate, exempt, or conditional. An unknown code returns a 400. With a key, describe classifies a plain-words item description against the codes.

### What are the rate limits for the OpenTaxRate API?

The OpenAPI spec does not state numeric limits. Without a key, lookups are limited per IP address, and a 429 with RATE_LIMITED or KEY_LIMITED asks you to wait the Retry-After seconds. Keyed lookups draw on credit, with a 402 NO_CREDITS when it runs out. See https://opentaxrate.com for current limits.

### Is there an OpenTaxRate MCP server?

You don't need an MCP server to give your agent OpenTaxRate. Jentic connects it directly from the API Directory: import it, add your key once if you use one, and your agent calls the rate and coverage operations on demand.

### How do I look up a sales tax rate through Jentic?

Search Jentic for 'sales tax rate at an address', load the getRate operation, and execute GET `/v1/rate` with either address as one line or state, street, city, and zip. Read rate, stateRate, and localRate from the response; rates are decimals, so 0.1055 is 10.55%. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the OpenTaxRate API?

Yes. The API has two read-only operations, so write a rule that allows GET `/v1/rate` alone for a checkout agent and it can look up rates but nothing else you have not chosen, and each lookup is logged. Neither operation changes any data.
