Observed since 20 Oct, 23:32 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Python SDK for the AgentTax API — sales tax, use tax, and capital gains for AI agents
Sales tax, use tax, and capital gains for AI agents. Full docs at agenttax.io/api-docs.
pip install agenttax
from agenttax import AgentTaxClient
client = AgentTaxClient() # keyless: demo mode, 50 calls/day
result = client.calculate(
role="buyer", # buyer side needs no nexus setup
amount=1000.00,
buyer_state="TX",
transaction_type="compute",
counterparty_id="agent_seller_001",
)
print(result["total_tax"]) # use tax owed on the purchase
print(result["combined_rate"]) # the location's composed rate (state + local)
print(result["applied_rate"]) # the rate actually applied to compute total_tax
print(result["confidence"]) # {"score": ..., "level": ...}
Demo mode returns the tax figure, the rate and a confidence score. It omits the audit trail, jurisdiction breakdown and advisories, and it keeps no history.
Get a free API key at agenttax.io — 1,500 calls/month at no cost — for the full response plus transaction history, nexus monitoring, capital gains tracking and 1099 export.
client = AgentTaxClient(api_key="atx_live_...")
role="seller" returns $0.00 on a new accountA seller only has to collect tax where it has economic nexus, and a new account
has none configured — so every seller-side calculation correctly returns
total_tax 0 with final_determination: "no_nexus" until you set nexus up:
import requests
requests.post(
"https://agenttax.io/api/v1/nexus",
headers={"X-API-Key": "atx_live_..."},
json={"nexus": {"TX": {"hasNexus": True, "reason": "Economic nexus"}}},
)
Or pass nexus_override={"TX": {"hasNexus": True}} to calculate() to model a
seller position without saving it. Note the shape — a bare list of state codes
is read as "no nexus" and silently returns $0.00. Buyer-side calls need none of
this, which is why the quickstart above starts there.
calculate(**kwargs)Calculate sales tax for a transaction.
| Parameter | Type | Required | Description |
|---|---|---|---|
role | str | ✓ | "seller" or "buyer" |
amount | float | ✓ | Transaction amount in USD |
buyer_state | str | ✓ | Two-letter state code |
transaction_type | str | ✓ | "saas", "compute", "consulting", etc. |
counterparty_id | str | ✓ | Counterparty identifier |
work_type | str | "compute", "research", "content", "consulting", "trading" | |
is_b2b | bool | Business-to-business transaction | |
use_context | str | "enterprise_system", "individual", or "mixed" — Maryland-only in v1, declares whether the purchase is solely for commercial use in an enterprise computer system (TB-56); absent = unchanged is_b2b-proxy default | |
buyer_zip | str | 5-digit ZIP for local rate lookup |
get_rates(state=None, format=None, explain=False)Fetch sales tax rates for all 51 jurisdictions. No auth required.
get_capital_gains_rates(state=None)Fetch state capital gains rates. No auth required.
get_local_rate(zip_code)Fetch combined local + state rate for a ZIP code.
get_transactions(limit=50, offset=0, ...)Fetch transaction history. Auth required.
log_trade(**kwargs) / get_trades(**kwargs)Capital gains trade tracking (FIFO/LIFO/Specific ID). Auth required.
from agenttax import AgentTaxClient, AuthError, RateLimitError, ValidationError
client = AgentTaxClient(api_key="atx_live_...")
try:
result = client.calculate(...)
except AuthError:
# Invalid or missing API key
pass
except RateLimitError:
# Monthly quota exceeded — upgrade tier or wait
pass
except ValidationError as e:
# Bad request parameters
print(e)
1,500 API calls/month at $0. Paid plans start at $25/month (10K calls). See agenttax.io/pricing.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.2.0 | 18 Sept 2026 | 3 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 23:32 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:e82b693336970d85fbb70f73423ebe589940af03af9a1e76fdd6cfd6c21a4981