MCP Server

Tax ID validation inside your AI assistant

The Lookuptax MCP server is a remote Model Context Protocol server that lets Claude Code, Cursor and other AI assistants check VAT, GST, ABN and other tax IDs in 100+ countries against official government registries, mid-conversation and with no integration code.

  • Official registries only
  • Up to 200 IDs per call
  • Same API key as REST
AI assistant lookuptax MCP

Before I add these suppliers to the ERP, check their VAT numbers: IE3628739L, NL12345678B0, FR74482917366

Used lookuptax · validate_many
[{ country_iso: "IE", tin: "3628739L" },
 { country_iso: "NL", tin: "12345678B0" },
 { country_iso: "FR", tin: "74482917366" }]
IEIE3628739LVALID
NLNL12345678B0INVALID
FRFR74482917366INDETERMINATE

1 of 3 is ready to onboard. The Dutch number has the wrong format, so ask the supplier to re-send it. France's registry didn't respond, so that one isn't invalid, just unconfirmed. I'll re-check it before you onboard.

Reply…
An AI assistant using the Lookuptax MCP server to validate three supplier VAT numbers in one call and explain the results.

How a check flows

  1. 01

    You ask

    In plain language, with one ID or a whole file.

  2. 02

    The assistant calls a tool

    validate or validate_many, with the country code and the ID.

  3. 03

    Lookuptax checks the registry

    Format, check digits, then the official source that issued the ID.

    VIESHMRCABR+100 more
  4. 04

    You get a clear verdict

    One explicit status per ID, explained in the chat.

What teams use it for

Anywhere someone would open a government lookup site in another tab, the assistant can run the check and carry on.

Data cleanup

Clean a vendor or customer master in one prompt

Point a coding agent at an exported CSV. It batches the IDs through validate_many, up to 200 at a time, and writes the verdict back as new columns. A row that fails doesn't fail the batch; it comes back marked.

“Validate every tax ID in vendors.csv and flag the ones we need to chase.”

coding agent · ~/finance
❯ validate every tax ID in vendors.csv and flag the ones we need to chase
● Reading vendors.csv: 184 rows, 14 countries
● lookuptax · validate_many (rows 1–184) ✓
VALID171 INVALID6 · 4 checksum, 2 not registered UNVERIFIED4 · format only, no public registry INDETERMINATE3 · registry down, queued for retry
Wrote vendors_checked.csv with status, reason and source columns.
The 6 invalid vendors are listed in to_chase.md with their contact owner.
❯ ▍
A coding agent validating 184 vendor tax IDs from a CSV through the Lookuptax MCP server.
Invoicing

Check before you zero-rate or apply reverse charge

Before you issue a B2B invoice without VAT, the assistant confirms the customer's number is live. Every result has an explicit status, so it won't tell you a number is valid when the registry never answered.

“Can I invoice this French customer without VAT?”

AI assistant lookuptax MCP

Can I invoice this French customer without VAT? Their number is FR74482917366.

Used lookuptax · validate
{ country_iso: "FR", tin: "74482917366" }
FRFR74482917366INDETERMINATE

Not yet. The format and check digits are fine, but the French registry didn't respond, so I can't confirm the number is active. Hold off on the reverse charge until it's confirmed. I'll run the check again in a few minutes.

Reply…
An AI assistant reporting an INDETERMINATE result instead of guessing when a government registry is unreachable.
Agents

A verification step for finance agents

Agents that process invoices or onboard customers call validate as one step in the run. They get a machine-readable status and reason instead of a scraped web form, so they can route on it.

AP agent · run #4182
Inbound invoice INV-2041
Sent to review
  1. Invoice parsed
    Supplier VAT NL12345678B0 · €18,400.00
  2. lookuptax · validate INVALID
    reason: INVALID_FORMAT
  3. Payment held, routed to AP review
    Supplier asked to confirm their VAT number
An accounts-payable agent calling the Lookuptax validate tool and routing an invoice to review when the supplier VAT number is invalid.

More ways to use it

Supplier onboarding

Procurement and AP teams paste a new supplier’s details into the assistant and get the registry verdict before the vendor is created in the ERP.

“Check the VAT number on this supplier form before I set them up.”

KYB and marketplace sellers

Compliance analysts verify a business’s tax registration as one step of a know-your-business review, alongside the other checks they run in the same chat.

“Verify the ABN and GSTIN on these three seller applications.”

Building an integration

Developers in Claude Code or Cursor test real IDs, inspect the response shape and write the integration against live results without leaving the editor.

“Validate a sample Irish VAT number and generate a TypeScript type for the response.”

Why validate through MCP

Official sources, not a cache

Every check goes to the government registry that issued the ID, such as VIES, HMRC or the ABR, so the assistant is never repeating stale third-party data.

Answers your assistant can’t overstate

Each result carries one of five explicit outcomes. A format-only pass is labelled UNVERIFIED and a registry outage is INDETERMINATE, so the model can’t report “valid” when the registry never confirmed it.

No integration code

Add one server entry to your MCP client and the tools appear. There is no SDK to install, no wrapper to maintain and no glue code between the model and the API.

Bulk checks in one call

validate_many takes up to 200 IDs. A failure on one entry is returned on that entry and doesn’t fail the batch, so the assistant can report partial results cleanly.

Your existing API key

MCP uses the same X-API-Key header, plan and rate limits as the REST API. If you already have a Lookuptax key, it works unchanged.

100+ countries in one tool

EU VAT, UK VAT, Australian ABN, Indian GSTIN, Mexican RFC, Canadian BN and more, all through the same validate tool with a country code and the ID.

What your assistant gets back

Every result has exactly one status. That stops an assistant from treating a format check as proof that a business is registered.

VALID

Format passed and a government registry confirmed the entity.

Accept it.

INVALID

Wrong structure or check digit, or the registry has no matching record.

Reject it.

UNVERIFIED

The country has no queryable registry, so only the format was checked.

Treat as format-only, not proof of registration.

INDETERMINATE

The registry was temporarily unreachable.

Retry later; don’t treat as invalid.

UNSUPPORTED

The country or ID type isn’t covered yet.

Nothing was checked.

Set it up in a minute

Create a free account (no credit card), copy your API key and add the server to your client. An existing Lookuptax key works as-is.

Claude Code
❯ claude mcp add --transport http lookuptax https://platform.lookuptax.com/api/gateway/mcp \
  --header "X-API-Key: YOUR_API_KEY"
Command to add the Lookuptax MCP server to Claude Code.
.mcp.json · Cursor and other clients
{
  "mcpServers": {
    "lookuptax": {
      "type": "http",
      "url": "https://platform.lookuptax.com/api/gateway/mcp",
      "headers": { "X-API-Key": "YOUR_API_KEY" }
    }
  }
}
MCP client configuration for the Lookuptax server.

Then ask in plain language: “Validate the Irish VAT number 3628739L.” For headers, request shapes and error codes, see the MCP server API reference.

Frequently asked questions

What is the Lookuptax MCP server?

It is a remote Model Context Protocol (MCP) server that exposes Lookuptax tax ID validation as tools an AI assistant can call. Once connected, Claude Code, Cursor or another MCP client can validate VAT, GST, ABN and other tax identification numbers against official government registries during a conversation.

Which AI assistants and clients does it work with?

Any MCP client that supports remote servers over Streamable HTTP and lets you set a custom request header, including Claude Code and Cursor. The server is stateless JSON-RPC 2.0, so there is no session to manage.

What tools does the server expose?

Two tools: validate checks a single tax ID (country_iso, tin, and name where the registry matches on name, e.g. Mexico and Canada), and validate_many checks up to 200 tax IDs in one call, returning the verdict, the identified ID type and the source used for each.

Does the MCP server cost extra?

No separate subscription is needed. The MCP server authenticates with your normal Lookuptax API key and draws on the same plan and rate limits as the REST API. The free plan needs no credit card.

Which countries can it validate?

More than 100 countries, the same coverage as the Lookuptax API. See the countries page for the full list of supported tax ID types.

Is the result checked against official government data?

Yes. Lookuptax validates only against official sources such as EU VIES, HMRC and the Australian Business Register. Where a country has no queryable registry, the result is marked UNVERIFIED rather than VALID.

What happens when a government registry is down?

The tool returns INDETERMINATE with retryable set to true instead of guessing. Your assistant can tell you to retry later rather than reporting the ID as invalid.

How do I connect it?

Create a free Lookuptax account to get an API key, then add the server URL https://platform.lookuptax.com/api/gateway/mcp to your MCP client with the header X-API-Key set to your key. In Claude Code that is a single claude mcp add command.

Give your assistant a tax ID tool

Free plan, no credit card. The same API key works for MCP and REST.