Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the OpenTaxRate API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fopentaxrate.com%2Fopentaxrate" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fopentaxrate.com%2Fopentaxrate" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with OpenTaxRate API.
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
GET STARTED
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
Patterns agents use OpenTaxRate API for, with concrete tasks.
★ 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.
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.
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.
Call GET /v1/rate with the one-line address and include=trace,regions, and report the match method and the special districts listed
2 endpoints — the opentaxrate api returns the sales tax rate at a us street address, built from the states' own published data.
METHOD
PATH
DESCRIPTION
/v1/rate
Sales tax rate at an address
/v1/coverage
States covered and how addresses are placed
/v1/rate
Sales tax rate at an address
/v1/coverage
States covered and how addresses are placed
What agents get from Jentic-routed access to this vendor.
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 isolation
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.
Intent-based discovery
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.
Alternatives and complements available in the Jentic catalogue.
Specific to using OpenTaxRate API through Jentic.
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.
For 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.
Use for: What is the sales tax rate at 1600 Pennsylvania Ave NW, Washington DC?, Get the sales tax rate for this Seattle address on a past date, Check whether groceries are taxable at this address, I need the state and local split of the sales tax at a ZIP+4
Not supported: 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.
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.
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.
Base layer of spec validity and structural soundness.
Aggregated quality score from linter diagnostics, weighted by severity.
Percentage of `$ref` references that resolve successfully.
Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).
Structural correctness score based on schema issues using logarithmic dampening.
Clarity, completeness, and ingestion readiness for developers and tooling.
How richly the API is illustrated with examples.
Percentage of examples that conform to their schemas.
Percentage of operations with complete response definitions (success, client error, server error).
Health of API ingestion, bundling, and resolution within Jentic pipelines.
Semantic breadth, depth, and agent comprehension for AI systems.
Coverage of descriptions across API elements.
Coverage of RFC 9457 Problem Details for error responses.
Coverage, uniqueness, and casing consistency of operationIds for AI inference.
Coverage of summaries across operations/tags/info.
Functional utility, complexity comfort, and AI orchestration readiness.
Agent comfort level based on API operational and structural complexity.
Trust, risk posture, and security compliance.
Average quality of security schemes based on authentication method strength (weakest link for OAuth2).
Findability, semantic richness, and reasoning readiness.
Clarity and depth of descriptions across API elements.
Score it yourself
Every API in the directory is allowlisted, so you can re-score it with no key required.
npx @jentic/api-scorecard-cli score <openapi-url>