Connect your AI Agents to Avalara in minutes

Merge lets you securely connect your agents to Avalara and thousands of tools instantly

Available tools

resolve_address

Validate and geocode a US or Canadian address, returning AvaTax-normalized address candidates and the tax jurisdictions that apply to it. Useful before create_transaction to confirm an address resolves cleanly.

list_certificates

List a company's exemption certificates, with optional $filter and pagination.

get_certificate

Retrieve a single exemption certificate by ID. Use list_certificates to find valid IDs.

create_certificate

Create a new exemption certificate for a company. Use discoverexemptionreasons for exemptionreasonid, and discoverentityusecodes if the exemption is tied to a customer usage type. Requires the company be provisioned for exemption certificates first — use getcertificatesetup, and requestcertificate_setup if status is 'NotProvisioned'.

update_certificate

Update an existing exemption certificate. Only provided fields are changed.

delete_certificate

Revoke and delete an exemption certificate. This cannot be undone.

discover_entity_use_codes

List Avalara's supported entity use codes (customer/usage types for tax exemptions). Use this to find valid entityUseCode values for createtransaction line items and createcertificate.

discover_exemption_reasons

List Avalara's supported certificate exemption reasons. Use this to find the exemptionreasonid required by create_certificate.

get_certificate_setup

Check whether a company is provisioned for AvaTax's exemption certificate module (CertCapture). createcustomer and createcertificate fail until this returns status='Provisioned' — if it returns 'NotProvisioned', call requestcertificatesetup first.

request_certificate_setup

Provision a company for AvaTax's exemption certificate module (CertCapture). Required once per company before createcustomer or createcertificate will work. Use getcertificatesetup to check status; provisioning can take a few minutes to complete after this call.

list_companies

List companies on this Avalara account, with optional $filter/$orderBy and pagination. Use to find a company's internal id/companyCode before calling getcompany, createnexus, createitem, createtransaction, etc.

get_company

Retrieve a single Avalara company by internal ID. Use list_companies to find valid IDs.

create_company

Create a new company on this Avalara account. companyCode must be unique on the account.

update_company

Update an existing Avalara company. Only provided fields are changed. Use get_company to check current values first.

delete_company

Delete a company from this Avalara account. This cannot be undone. Use get_company to verify the record first.

list_customers

List a company's customers, with optional $filter/$orderBy and pagination.

get_customer

Retrieve a single customer by customer code. Use list_customers to find valid codes.

create_customer

Create a new customer record for a company. customerCode must be unique within the company. Requires the company be provisioned for exemption certificates first — use getcertificatesetup, and requestcertificatesetup if status is 'NotProvisioned'.

update_customer

Update an existing customer. Only provided fields are changed.

delete_customer

Delete a customer record. This cannot be undone.

list_items

List a company's product/item catalog, with optional $filter/$orderBy and pagination.

get_item

Retrieve a single item by internal ID. Use list_items to find valid IDs.

create_item

Create a new product/item for a company. Use discovertaxcodes to find the correct taxCode so transactions referencing this item's itemCode calculate tax correctly.

update_item

Update an existing item. Only provided fields are changed.

delete_item

Delete an item. This cannot be undone.

list_locations

List a company's physical business locations, with optional $filter and pagination.

get_location

Retrieve a single location by internal ID. Use list_locations to find valid IDs.

create_location

Create a new physical business location for a company. locationCode must be unique within the company.

update_location

Update an existing location. Only provided fields are changed.

delete_location

Delete a location. This cannot be undone.

list_nexus

List a company's nexus declarations (where it has a tax obligation), with optional $filter and pagination.

get_nexus

Retrieve a single nexus declaration by ID. Use list_nexus to find valid IDs.

create_nexus

Declare a new nexus (tax obligation) for a company in a country/region. Use list_companies to find the companyId. For a state/region nexus, AvaTax also requires a parent country-level nexus to exist first (e.g. 'US' before 'US/CA') — this tool declares that automatically if it's missing.

update_nexus

Update an existing nexus declaration. Only provided fields are changed. Use get_nexus to check current values first.

delete_nexus

Delete a nexus declaration. This cannot be undone. Use get_nexus to verify the record first.

discover_tax_codes

Browse Avalara's global system tax code library (not company-specific). Use this to find the correct taxCode value for createitem, createtransaction line items, and createtaxcode.

list_company_tax_codes

List a company's own custom tax codes (distinct from Avalara's global library — use discovertaxcodes for that).

get_tax_code

Retrieve a single company custom tax code by ID. Use listcompanytax_codes to find valid IDs.

create_tax_code

Create a new custom tax code for a company. For standard tax codes, prefer discovertaxcodes.

update_tax_code

Update an existing company custom tax code. Only provided fields are changed.

delete_tax_code

Delete a company custom tax code. This cannot be undone.

create_transaction

Calculate tax on a new transaction. Use discovertaxcodes for line taxCode, discoverentityusecodes for exemptions, listcustomers/listitems for customerCode/itemCode. Set commit=true to finalize immediately, or call committransaction later. Use an '...Invoice' type (the default) unless this is a throwaway estimate — '...Order' types aren't saved by AvaTax.

get_transaction

Retrieve a single transaction by company code and transaction code, including line items and per-jurisdiction tax detail. Use listtransactions or createtransaction's response to find the code. Pass document_type matching how it was created (e.g. 'SalesOrder') — AvaTax defaults to looking for 'SalesInvoice' and returns not-found for any other type if this is omitted.

list_transactions

List transactions for a company, with optional $filter/$orderBy and pagination. AvaTax silently limits results to a recent date window when filter is omitted — pass a filter like "date ge '2024-01-01'" to see older transactions.

commit_transaction

Commit a transaction for tax reporting. Once committed it counts toward filings; use voidtransaction to reverse it instead of deleting. Pass documenttype matching how it was created — AvaTax defaults to 'SalesInvoice' and returns not-found for any other type if this is omitted.

void_transaction

Void a transaction, cancelling it for tax reporting purposes. Use gettransaction to verify the record first. Pass documenttype matching how it was created — AvaTax defaults to 'SalesInvoice' and returns not-found for any other type if this is omitted.

adjust_transaction

Correct a previously created transaction by replacing it with new data. Use gettransaction first to see the current state. Pass documenttype matching how it was created — AvaTax defaults to 'SalesInvoice' and returns not-found for any other type if this is omitted.

refund_transaction

Create a refund for a previously committed transaction. Pass document_type matching how it was created — AvaTax defaults to 'SalesInvoice' and returns not-found for any other type if this is omitted.

validate_credential

Check whether the stored Avalara Account ID, License Key, and environment are valid by pinging AvaTax.

View all tools by creating a free accountSee more tools

How to set up Merge Agent Handler

In an mcp.json file, add the configuration below, and restart Cursor.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5      "headers": {
6        "Authorization": "Bearer yMt*****"
7      }
8    }
9  }
10}
11
Copy Code

Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.

Make sure Claude is using the Node v20+.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "command": "npx",
5      "args": [
6        "-y",
7        "mcp-remote@latest",
8        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9        "--header",
10        "Authorization: Bearer ${AUTH_TOKEN}"
11      ],
12      "env": {
13        "AUTH_TOKEN": "yMt*****"
14      }
15    }
16  }
17}
Copy Code
Copied!

Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.

Learn more in the official documentation ↗

1{
2    "mcpServers": {
3      "agent-handler": {
4        "command": "npx",
5        "args": [
6          "-y",
7          "mcp-remote@latest",
8          "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9          "--header",
10          "Authorization: Bearer ${AUTH_TOKEN}"
11        ],
12        "env": {
13          "AUTH_TOKEN": "<ah-production-access-key>"
14        }
15      }
16    }
17  }
Copy Code

In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".

You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.

Learn more in the official documentation ↗

1{
2  "inputs": [
3    {
4      "type": "promptString",
5      "id": "agent-handler-auth",
6      "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7      "password": true
8    }
9  ],
10  "servers": {
11    "agent-handler": {
12      "type": "stdio",
13      "command": "npx",
14      "args": [
15        "-y",
16        "mcp-remote@latest",
17        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18        "--header",
19        "Authorization: Bearer ${input:agent-handler-auth}"
20      ]
21    }
22  }
23}
Copy Code

FAQs on using Merge's Avalara  MCP server

FAQs on using Merge's Avalara  MCP server

Explore other MCP servers built and managed by Merge

google_meet
Google Meet
google_sheets
Google Sheets
google_slides
Google Slides
google_tasks
Google Tasks
grafana
Grafana
granola
Granola
greenhouse
Greenhouse
guru
Guru
hex
Hex
hibob
HiBob
hubspot
HubSpot
intercom
Intercom
jenkins
Jenkins
jira
Jira
jira_service_management
Jira Service Management
kintone
Kintone
klaviyo
Klaviyo
linear
Linear
linkedin
LinkedIn
looker
Looker
lucidchart
Lucidchart
luma
Luma
make
Make
metabase
Metabase

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now