AgentTax MCP Server
OfficialAllows automatic tax tracking via Stripe webhooks, processing payment events to calculate and log sales tax liabilities.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AgentTax MCP ServerTrack a $49 payment from Texas."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AgentTax MCP Server
Tax compliance for MCP tool developers and AI agents, powered by AgentTax.
For MCP tool developers
If you build MCP tools that charge for usage, you have sales tax obligations in states where your buyers are located. Most payment processors don't handle this correctly for digital services.
Add AgentTax to your MCP setup and call track_payment after every payment. That's it.
{
"mcpServers": {
"agenttax": {
"command": "npx",
"args": ["@agenttax/mcp-server"],
"env": {
"AGENTTAX_API_KEY": "atx_live_your_key"
}
}
}
}After a payment:
track_payment({
amount: 49.00,
buyer_state: "TX",
buyer_zip: "78701",
description: "MCP API access — monthly subscription",
payment_id: "pi_stripe_abc123",
source: "stripe"
})Returns your tax liability, compliance status, and logs it to your account. All transactions are viewable in your AgentTax dashboard.
Related MCP server: brasilnfe-mcp
Stripe webhook (fully automated)
For fully automatic tax tracking without calling any tool manually, point your Stripe webhook to AgentTax:
In Stripe Dashboard → Developers → Webhooks, add an endpoint:
https://agenttax.io/api/v1/webhooks/stripe?key=atx_live_YOUR_KEYSelect events:
payment_intent.succeeded,checkout.session.completed,invoice.paid,charge.succeededOptional: set
metadata.work_typeon your Stripe products (compute|research|content|consulting|trading) for precise tax classification
Every payment is automatically classified, taxed, and logged. No code changes required.
Requires a billing address on the Stripe payment. Enable full address collection in your Stripe Checkout settings.
Install
Claude Code
claude mcp add agenttax -- npx @agenttax/mcp-server
export AGENTTAX_API_KEY=atx_live_your_keyClaude Desktop / Cursor / Windsurf
Add to your MCP config file:
{
"mcpServers": {
"agenttax": {
"command": "npx",
"args": ["@agenttax/mcp-server"],
"env": {
"AGENTTAX_API_KEY": "atx_live_your_key"
}
}
}
}Demo mode works without a key (50 calls/day, no account required).
Tools
track_payment
Track a payment you received and calculate your sales tax liability. The primary tool for MCP tool developers.
track_payment({
amount: 49.00,
buyer_state: "TX",
buyer_zip: "78701",
description: "MCP tool subscription",
payment_id: "pi_stripe_abc123",
source: "stripe"
})Returns:
{
"payment_tracked": true,
"amount": 49.00,
"buyer_state": "TX",
"tax_owed": 4.04,
"tax_rate": 0.0825,
"taxable": true,
"work_type": "content",
"transaction_id": "atx_...",
"compliance_note": "$4.04 sales tax owed to TX. Remit to the state DOR."
}Transaction classification is automatic. Set description to what you sold for best results, or pass an explicit work_type via the Stripe metadata field.
calculate_tax
Full tax calculation with complete audit trail. Use this when you need jurisdiction details, confidence scoring, and advisories.
calculate_tax({
role: "seller",
amount: 500,
buyer_state: "TX",
buyer_zip: "78701",
transaction_type: "saas",
work_type: "content",
counterparty_id: "customer-abc",
is_b2b: false
})log_trade
Log a buy or sell for capital gains tracking.
log_trade({
asset_symbol: "COMPUTE",
trade_type: "buy",
quantity: 100,
price_per_unit: 12.50
})Sell trades return realized gain/loss with cost basis (FIFO, LIFO, or Specific ID).
get_rates
Get tax rates for all 51 US jurisdictions or a single state.
get_rates({ state: "TX", explain: true })configure_nexus
Set which states you have economic nexus in. Required for sellers to get non-zero tax results.
configure_nexus({
nexus: {
TX: { hasNexus: true, reason: "Economic nexus" },
NY: { hasNexus: true, reason: "Physical presence" }
}
})check_health
Check API health and available endpoints.
Get an API Key
curl -X POST https://agenttax.io/api/v1/auth/signup \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com", "password": "securepass", "agent_name": "my-mcp-server"}'Save the api_key.key from the response — it's only shown once.
Pricing
Tier | Price | Calls/month |
Free | $0 | 100 |
Starter | $25/mo | 10,000 |
Growth | $99/mo | 100,000 |
Pro | $199/mo | 1,000,000 |
x402 | ~$0.001/call | Pay-per-call, no signup |
Links
License
MIT
Available Tools
6 toolscalculate_taxB
Calculate US sales tax or use tax for an AI agent transaction. Returns tax amount, rate, jurisdiction, audit trail, and advisories.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | Your role in the transaction | |
| amount | Yes | Transaction amount in USD | |
| is_b2b | No | Business-to-business transaction (affects rates in MD, IA) | |
| buyer_zip | No | 5-digit US zip code for local rate lookup | |
| work_type | No | What the AI agent does — drives per-state tax classification | |
| buyer_state | Yes | 2-letter US state code (e.g. TX, NY, CA) | |
| counterparty_id | Yes | Identifier for the other party in the transaction | |
| seller_remitting | No | Whether the seller is already collecting tax | |
| transaction_type | Yes | Type of transaction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions returning 'audit trail and advisories' which hints at behavior, but doesn't say whether it's read-only, whether it mutates anything, what permissions are needed, or whether the calculation is deterministic. For a 9-param tax calculation tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with no filler; the purpose is front-loaded and the return contents are summarized compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 9 parameters, the description is minimally adequate but leaves real gaps: it doesn't explain when to prefer siblings, what the 'advisories' mean, or how the audit trail is structured. Given the complexity of multi-jurisdiction tax calculation, more context would help an agent call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all nine parameters including enums and constraints. The description adds no parameter-level detail (e.g., that role affects the calculation direction, or that work_type drives per-state classification in tandem with transaction_type). Baseline 3 is appropriate given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (calculate) and resource (US sales tax / use tax) with a stated scope tied to AI agent transactions. It doesn't differentiate itself from siblings like get_rates or track_payment, but the purpose is clear and accurate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what it does but never says when to use it versus get_rates, track_payment, or configure_nexus. There's no mention of prerequisites (e.g., need buyer_state and buyer_zip for accuracy, or that this is the right tool before a transaction completes).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_healthB
Check AgentTax API health, available endpoints, pricing tiers, and registry validation status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether this is a read-only operation, what the response format looks like, rate limits, or authentication requirements. While 'check' implies a safe read, that is not explicit and the lack of any behavioral detail is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and enumerates the outputs. It is appropriately sized for a no-arg health check. Slightly more structure (e.g., specifying return format) could improve it, but there is no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and no annotations, the description is reasonably complete for a status tool but could do more to describe what the health report includes or when to call it. It omits any behavioral details such as whether it is safe to call repeatedly or what a failure response looks like. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which sets the baseline at 4 per the rubric. The description adds no parameter information because none is needed. It correctly lists the categories of information returned, which is relevant to what the agent gets back.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb (check) and resource (AgentTax API health) plus enumerates what the check covers: endpoints, pricing tiers, registry validation status. This distinguishes it from siblings like calculate_tax or get_rates, which perform different operations. It would be a 5 if it explicitly named an alternative context, but the verb+resource is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_rates or track_payment. There is no mention of frequency, prerequisites, or exclusions. An agent would have to infer usage from the name and sibling context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_nexusA
Configure which US states you have economic nexus in. Sellers must configure nexus to get non-zero tax results. Requires API key.
| Name | Required | Description | Default |
|---|---|---|---|
| nexus | Yes | Object with state codes as keys, e.g. { TX: { hasNexus: true, reason: '...' } } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the auth requirement ("Requires API key") and the downstream consequence of skipping the call, but for a mutation tool it never says whether this replaces the entire nexus configuration or merges with existing states, nor whether omitted states are cleared.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, prerequisite, auth requirement. The primary purpose is front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation tool with no annotations and no output schema, the description covers purpose, prerequisite, and auth. The one notable omission is the replace-vs-merge semantics of the nexus object, which matters for a configuration mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the nested nexus object, hasNexus flag, reason string, and example format are all documented in the schema. The description adds no syntax or format detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (configure) and resource (US state economic nexus), which is clearly distinct from the sibling tools (track_payment, calculate_tax, get_rates). It stops short of explicitly naming or contrasting a sibling, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Sellers must configure nexus to get non-zero tax results" gives a concrete when-to-use condition and prerequisite, which is exactly the context an agent needs before calling calculate_tax. It offers no when-not-to-use guidance or alternatives, keeping it at 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ratesA
Get US sales tax rates. Returns rate, digital taxability, SaaS notes, and verification metadata for all 51 jurisdictions or a single state.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | 2-letter state code for single state lookup. Omit for all states. | |
| format | No | Response format (default: full, compact: machine-optimized, verified: with verification details) | |
| explain | No | Include human-readable explanations for the rate and taxability |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully enumerates the returned data (rate, digital taxability, SaaS notes, verification metadata), which signals an informational lookup, but it says nothing about data recency, sourcing, rate limits, or whether results are cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding, and the resource plus return payload are front-loaded in the first clause. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the job of describing return values and does so concisely, listing the four returned data categories. It stops short of explaining what the format enum variants yield or the granularity of 'verification metadata,' leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema, establishing a baseline of 3. The description only reinforces the state-scoping behavior already present in the schema and adds no new semantics for format or explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('US sales tax rates') with explicit scope ('all 51 jurisdictions or a single state'). It is distinguishable from calculate_tax and track_payment by implication, but never names or contrasts a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Scope usage is implied by 'for all 51 jurisdictions or a single state,' which hints that omitting state broadens the query. There is no explicit when-to-use guidance, no statement of when to prefer calculate_tax instead, and no prerequisites called out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_tradeA
Log a buy or sell trade for capital gains tracking. Sell trades return realized gain/loss with cost basis.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Free-text notes about the trade | |
| quantity | Yes | Number of units | |
| trade_type | Yes | Buy or sell | |
| asset_symbol | Yes | Asset identifier (e.g. COMPUTE, GPU_HOUR, ETH) | |
| price_per_unit | Yes | Price per unit in USD | |
| resident_state | No | 2-letter state code for state capital gains tax estimate | |
| specific_lot_id | No | Lot ID for specific identification method | |
| accounting_method | No | Cost basis method (default: fifo) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one real trait beyond the schema: sell trades return realized gain/loss with cost basis. However, it says nothing about persistence, whether logging is idempotent, permission/auth needs, or what a buy trade returns, leaving meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and followed by the one notable behavioral distinction. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema, the description covers the primary action and one return behavior but omits guidance on the cost-basis/accounting-method options and state tax parameter. It is adequate but leaves the agent to rely entirely on the schema for the more specialized parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters are already documented in the schema, which sets the baseline at 3. The description adds no parameter-level meaning (e.g., when to supply specific_lot_id vs accounting_method), so it neither compensates nor detracts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (log) and resource (buy/sell trade) plus the domain purpose (capital gains tracking), which is concrete enough for an agent to act on. It does not differentiate itself from siblings like track_payment or calculate_tax, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for capital gains tracking' implies when the tool is relevant, but there is no explicit when-to-use vs when-not guidance and no sibling alternative named (e.g., track_payment for non-asset transactions). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_paymentA
Track a payment you received and calculate your sales tax liability. Call this after receiving any payment — Stripe, x402, or direct. Automatically classifies the transaction, calculates tax owed, and logs it to your AgentTax account.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Payment amount in USD | |
| is_b2b | No | Buyer is a business (affects rates in MD, IA, NJ) | |
| source | No | Payment processor used | |
| buyer_zip | No | Buyer's 5-digit zip code for local tax rates (more precise) | |
| payment_id | No | Your payment reference ID for deduplication (Stripe payment_intent ID, x402 receipt, invoice number, etc.) | |
| buyer_state | Yes | 2-letter US state where the buyer is located (e.g. TX, NY, CA) | |
| description | No | What you sold — used to classify the transaction (e.g. 'API access', 'MCP tool subscription', 'compute credits', 'AI consulting') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It usefully discloses that the call classifies the transaction, computes tax owed, and writes a record to the AgentTax account, which is meaningful side-effect context. It omits idempotency behavior (dedup is only hinted at via the payment_id schema field), auth/account requirements, and whether the logged liability can be amended or removed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action and its trigger, with zero filler. The follow-on sentence covers the automatic behaviors compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter write tool with no annotations and no output schema, the description is adequate but thin on outcomes: it says tax is calculated and logged but never indicates what the caller gets back (computed liability, classification result, receipt/id). An agent cannot tell whether it must read the result elsewhere or whether the call is safe to retry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have schema descriptions, so baseline is 3. The prose echoes the source options ('Stripe, x402, or direct') but adds no format, precedence, or default guidance beyond what the schema already states (e.g. it never mentions buyer_state, amount, or the b2b/zip rate effects).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (track) plus the resource (a payment received), and adds the secondary effects: auto-classification, tax calculation, and logging to an AgentTax account. It does not explicitly contrast itself with siblings like calculate_tax, so the agent gets a clear purpose but no differentiation from the tax-only alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger: 'Call this after receiving any payment — Stripe, x402, or direct,' which tells the agent the timing and the covered payment sources. It stops short of naming when not to use it or pointing to calculate_tax for hypothetical or non-received-payment tax estimates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
calculate_tax - First observed
check_health - First observed
configure_nexus - First observed
get_rates - First observed
log_trade - First observed
track_payment
TDQS
Scored across 6 tools
Most tools target distinct concerns: get_rates fetches rates, configure_nexus sets state configuration, check_health reports status, and log_trade handles capital gains. However, track_payment and calculate_tax overlap significantly, since track_payment also calculates tax owed, making it unclear when an agent should use one versus the other.
All six tools follow a clean verb_noun snake_case pattern: track_payment, calculate_tax, get_rates, configure_nexus, check_health, log_trade. The convention is fully predictable and readable.
Six tools is well-scoped for a niche tax/accounting server. Each tool covers a distinct lifecycle step (configure, fetch rates, calculate, track, log, health-check) without bloat.
The surface covers configuration, calculation, and logging, but there is no way to retrieve or list previously logged payments or trades, and no update/delete or reporting/filing operations. Logging without a corresponding read-back creates a notable dead end for agents.
Maintenance
Related MCP Connectors
Merchant-of-record MCP: AI agents sell software & digital goods, global tax handled, BYO key.
EU/UK VAT compliance for AI agents: number validation, rate lookups, reverse-charge checks.
Agent Commerce Protocol MCP — bridges Stripe ACP + Google AP2 + Coinbase x402 for agent payments
United States payments for AI agents — Stripe checkout via Stripe. Never holds funds.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA sovereign, MIT-licensed MCP server for US tax operations, enabling offline-capable and self-hostable tax workflow management.MIT

brasilnfe-mcpofficial
FlicenseNot gradedqualityDmaintenanceMCP server that exposes Brazilian tax infrastructure as tools, resources, and prompts, enabling AI agents to emit and manage fiscal documents (NF-e, NFC-e, NFS-e, CT-e, MDF-e, DC-e) through natural language.-- AlicenseAqualityBmaintenancePayment infrastructure MCP server enabling AI agents to make gasless USDC payments on Base and JIT single-use virtual card checkouts, with zero-trust card handling, merchant checkout hints, and signed receipts.1367 npm1MIT
- AlicenseAqualityCmaintenanceEnables MCP hosts like Claude, VS Code, Cursor, and others to discover payment methods, create payment links, verify payments, inspect invoices, and manage refunds through focused tools, with a guided safe payment workflow and a restricted generic API escape hatch.722 npmMIT