{"openapi":"3.1.0","info":{"title":"AvaTax (BYOK) API","version":"0.1.0","description":"AvaTax (BYOK) lets an AI assistant read your own AvaTax data through the AvaTax API with a key you supply (AvaTax account id). Read-only: 11 tools (ping, list_companies, list_company_nexus, list_economic_nexus_thresholds, list_transactions, get_transaction, list_tax_rules, list_items, list_locations, list_tax_codes, list_nexus_by_address). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-avatax.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-avatax/docs"},"termsOfService":"https://connectorbay.com/byok-avatax/terms"},"servers":[{"url":"https://byok-avatax.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-avatax/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/ping":{"post":{"operationId":"ping","summary":"Check the credentials: returns the AvaTax API version, whether authentication worked, the user name and the account id. ","description":"Check the credentials: returns the AvaTax API version, whether authentication worked, the user name and the account id. Use for \"Are my AvaTax credentials working and which account are they for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"pingArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_companies":{"post":{"operationId":"list_companies","summary":"List the companies in your AvaTax account with company code, name, default country, currency, active and test flags. Pag","description":"List the companies in your AvaTax account with company code, name, default country, currency, active and test flags. Paged with top and skip. Use for \"Which companies are set up in AvaTax\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"top":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 1000).","title":"Top"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Skip"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional AvaTax filter expression, for example \"country eq 'US'\".","title":"Filter"}},"title":"list_companiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_company_nexus":{"post":{"operationId":"list_company_nexus","summary":"List where a company is registered to collect tax (nexus): country, region, jurisdiction name, nexus type, effective and","description":"List where a company is registered to collect tax (nexus): country, region, jurisdiction name, nexus type, effective and end dates, tax id. Use for \"In which states does my AvaTax company have nexus\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"AvaTax company id (the id field from list_companies).","title":"Company Id","type":"integer"},"top":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 1000).","title":"Top"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Skip"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional AvaTax filter expression, for example \"country eq 'US'\".","title":"Filter"}},"required":["company_id"],"title":"list_company_nexusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_economic_nexus_thresholds":{"post":{"operationId":"list_economic_nexus_thresholds","summary":"Show economic-nexus threshold status per US state for a company, with when it was last refreshed. Optionally one state. ","description":"Show economic-nexus threshold status per US state for a company, with when it was last refreshed. Optionally one state. Use for \"Which states are close to my economic nexus threshold in AvaTax\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"AvaTax company id (the id field from list_companies).","title":"Company Id","type":"integer"},"region":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Two-letter US state code to filter to, for example 'CA'.","title":"Region"}},"required":["company_id"],"title":"list_economic_nexus_thresholdsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_transactions":{"post":{"operationId":"list_transactions","summary":"List a company's tax transactions (up to 1000 per call) with code, date, type, status, customer code, currency and total","description":"List a company's tax transactions (up to 1000 per call) with code, date, type, status, customer code, currency and total amount, exempt amount and tax. Use for \"What sales tax did we calculate on recent AvaTax transactions\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_code":{"description":"AvaTax company code, for example 'DEFAULT'.","maxLength":200,"title":"Company Code","type":"string"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"AvaTax filter expression. A date range is required in practice, for example \"date ge '2026-09-01' and date le '2026-09-30'\".","title":"Filter"},"top":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 1000).","title":"Top"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Skip"}},"required":["company_code"],"title":"list_transactionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_transaction":{"post":{"operationId":"get_transaction","summary":"Get one transaction by company code and transaction code with date, type, status, customer, currency and totals. Use for","description":"Get one transaction by company code and transaction code with date, type, status, customer, currency and totals. Use for \"Show AvaTax transaction INV-1 of company DEFAULT\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_code":{"description":"AvaTax company code, for example 'DEFAULT'.","maxLength":200,"title":"Company Code","type":"string"},"transaction_code":{"description":"The transaction code, for example 'INV-1'.","maxLength":200,"title":"Transaction Code","type":"string"}},"required":["company_code","transaction_code"],"title":"get_transactionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_tax_rules":{"post":{"operationId":"list_tax_rules","summary":"List a company's custom tax rules: tax code, jurisdiction, rule type, value, dates and description. Use for \"Which custo","description":"List a company's custom tax rules: tax code, jurisdiction, rule type, value, dates and description. Use for \"Which custom tax rules does my AvaTax company have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"AvaTax company id (the id field from list_companies).","title":"Company Id","type":"integer"},"top":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 1000).","title":"Top"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Skip"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional AvaTax filter expression, for example \"country eq 'US'\".","title":"Filter"}},"required":["company_id"],"title":"list_tax_rulesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_items":{"post":{"operationId":"list_items","summary":"List a company's item catalog: item code, description, tax code, group, category and status. Use for \"Which items are in","description":"List a company's item catalog: item code, description, tax code, group, category and status. Use for \"Which items are in my AvaTax catalog and what tax codes do they use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"AvaTax company id (the id field from list_companies).","title":"Company Id","type":"integer"},"top":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 1000).","title":"Top"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Skip"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional AvaTax filter expression, for example \"country eq 'US'\".","title":"Filter"}},"required":["company_id"],"title":"list_itemsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_locations":{"post":{"operationId":"list_locations","summary":"List a company's registered business locations: code, description, address, country and default flag. Use for \"Which bus","description":"List a company's registered business locations: code, description, address, country and default flag. Use for \"Which business locations are set up in AvaTax\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"AvaTax company id (the id field from list_companies).","title":"Company Id","type":"integer"},"top":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 1000).","title":"Top"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Skip"},"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional AvaTax filter expression, for example \"country eq 'US'\".","title":"Filter"}},"required":["company_id"],"title":"list_locationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_tax_codes":{"post":{"operationId":"list_tax_codes","summary":"List Avalara's system tax codes (reference data): code, description, parent code and category. Use filter to search. Use","description":"List Avalara's system tax codes (reference data): code, description, parent code and category. Use filter to search. Use for \"What is the AvaTax tax code for software as a service\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"AvaTax filter expression, for example \"description contains 'software'\".","title":"Filter"},"top":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 1000).","title":"Top"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Skip"}},"title":"list_tax_codesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_nexus_by_address":{"post":{"operationId":"list_nexus_by_address","summary":"List the taxing jurisdictions (nexus types) that apply to a street address. Reference data; region and country are requi","description":"List the taxing jurisdictions (nexus types) that apply to a street address. Reference data; region and country are required. Use for \"Which AvaTax jurisdictions apply to an address in Austin, Texas\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country":{"description":"ISO 3166 country code or name, for example 'US'.","maxLength":60,"title":"Country","type":"string"},"region":{"description":"ISO 3166 region code or name, for example 'TX'.","maxLength":60,"title":"Region","type":"string"},"city":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"City of the address.","title":"City"},"postal_code":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Postal or ZIP code.","title":"Postal Code"},"line1":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"First address line.","title":"Line1"},"top":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 1000).","title":"Top"},"skip":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Skip"}},"required":["country","region"],"title":"list_nexus_by_addressArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}