Mcp Legal Entity Resolver

com.mambabuiltPublished by mambabuilt.comv1.4.1Updated Nov 7, 2026

Resolve a company domain to its registered legal entity, company number, LEI and VAT number.

VerifiedSTDIODesktop onlyFinanceBusiness & Commerce

Overview

AI-generated overview

Resolves a company domain to its registered legal entity — legal name, company number, jurisdiction, LEI and VAT number — via an Apify actor.

What you can do
  • Resolve a single company domain to the registered legal entity behind it, returning legal name, company number, jurisdiction, status, entity type, LEI and VAT number as one flat row.
  • Query UK Companies House, GLEIF, SEC EDGAR, French Sirene and Norwegian Brreg registers, optionally narrowed by a jurisdiction hint or a legal name hint.
  • Choose exact or fuzzy name matching and inspect match method, confidence and rejected candidates.
  • Cross-check a found VAT number against the EU VIES service.
  • Use cached results (90 days for a match, 7 days for a null) or force a fresh lookup, with an optional per-call spending cap.
When to use it
Useful when you need the registered legal entity, company number, LEI or VAT number behind a company website, for example to enrich a CRM or spreadsheet with verified company records. It suits compliance, KYC-style research and data enrichment where a confirmed register match matters more than filling every row.
Requirements
Runs locally via npx (Node.js) as a stdio process. Requires an Apify account and an APIFY_TOKEN environment variable. Each call also needs the user's own name and email, which are sent to the SEC as the EDGAR requester identity. Network access to the Apify platform and the company registers is required.
Before you install
Every call consumes Apify credits: a per-domain charge applies whether or not a register match is found, plus an actor start event; a max_charge_usd cap can limit spending. The APIFY_TOKEN is a paid-account credential. The name and email you supply are sent to the SEC, and the domain is sent to third-party registers and to VIES. Fuzzy matching can return a confidently wrong company, so check match confidence and rejected candidates before acting.

Installation

In SourceWeft

  1. Open Mcp Legal Entity Resolver in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Legal Entity Resolver MCP Server

[Glama score] [MCP Registry] [npm version] [npm downloads] [license] [mcpservers.org]

[Legal Entity Resolver MCP server]

MCP server for the Mamba Labs Legal Entity Resolver actor on Apify.

Give it a company domain and it returns the registered legal entity behind it: legal name, company number, jurisdiction, status, LEI and VAT number. One flat row per domain, 24 fields, ready for Clay or a CRM.

Install

bash
npx -y @mambalabsdev/mcp-legal-entity-resolver

Claude Desktop

json
{  "mcpServers": {    "mamba-legal-entity-resolver": {      "command": "npx",      "args": ["-y", "@mambalabsdev/mcp-legal-entity-resolver"],      "env": { "APIFY_TOKEN": "your-apify-token" }    }  }}

Get an Apify token at console.apify.com/account/integrations.

Tool

resolve_legal_entity

Company domain in, the registered legal entity behind it out.

InputTypeRequiredNotes
sec_requester_namestringyesYour own name or your company's name, sent to the SEC.
sec_requester_emailstringyesYour own working email, sent to the SEC with your name.
domainstringyesA single company domain, for example monzo.com. Protocol and path are stripped.
legal_name_hintstringnoSkips the domain lookup and goes straight to the registers with this name. Use it when you already have the legal name and just want the register record.
jurisdiction_hintstringnoISO-2 country code. GB/UK asks Companies House, US asks SEC EDGAR, FR asks the French Sirene register (SIREN), NO asks the Norwegian Brreg register (organisasjonsnummer). Each asks GLEIF alongside. Any other code asks GLEIF alone. Leave empty to query all five.
match_strictnessenumnoexact accepts a register record only when the normalized legal names are equal. fuzzy returns the best scoring candidate with a confidence below 100 and a warning in rejected_candidates. Default exact.
validate_vatbooleannoRuns any VAT number found on the company's own pages through the EU VIES service and returns the name VIES holds for it, as a cross-check against the register name. Default true.
skipCacheenumnofalse uses the cache, 90 days for a resolved company and 7 days for a null. true forces a fresh look. Default false.
max_charge_usdnumbernoOptional spending cap for this call, in USD. The actor stops before any charge that would take the run past this amount and keeps every row already charged.

A null is the product, not a gap

Register search endpoints are fuzzy and they always return something. Taking the top search result gives you a confidently wrong company number more often than not. This actor accepts a match only when the legal names are identical after normalization, which is why roughly 6 domains in 10 resolve instead of 10 in 10, and why the 6 are worth acting on.

Read match_method, match_confidence and rejected_candidates before acting on a match. fuzzy strictness is a research mode: it will hand you a confidently wrong company on most domains.

Three registers are queried: UK Companies House, GLEIF and SEC EDGAR.

Why the SEC fields are required. The SEC requires every automated request to EDGAR to identify the requester by name and email, as a User-Agent of the form Name [email protected] (SEC: Accessing EDGAR data). The actor sends your sec_requester_name and sec_requester_email and never a default or shared identity. A call without both fails before any request, naming the two fields.

Billing

You are charged per domain resolved, plus the platform's actor start event. Prices from the live pricing record, read 2026-10-05:

EventPrice per event (USD)Fires when
domain-resolved$0.007 on the Free plan, down to $0.00595 on higher Apify plansOne domain looked up: the company's own pages fetched and read for a legal name, then up to three company registers queried for an exact match. Charged whether or not a register matches, because the work is the same either way and charging only for matches would push this Actor toward guessing. Not charged when the domain cannot be reached at all.
apify-actor-start$0.00005Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).

Cached results are 90 days for a resolved company and 7 days for a null. The actor's Apify page carries the current prices. Running this server consumes Apify credits.

What this server does and does not do

It is a thin client for the Apify actor. It passes your input through and returns the actor's output unchanged. Every behavior described above lives in the actor, not here.

This is not a company database and not a credit or risk product. It does not score companies, rate them, or tell you whether to trade with them. It answers one question: which registered legal entity sits behind this domain.

Errors are surfaced, never swallowed. An invalid input, an invalid token, an exhausted balance, a timeout, or a run that returns anything other than a dataset all come back as an explicit tool error rather than as an empty result.

How each call runs

Each call starts the actor run, polls it until it finishes, then reads the dataset. The run is allowed 1,800 seconds. If the run is still going when this call stops waiting, the call returns the run id and a console link instead of a timeout, so the result is never lost.

Source

The actor is on the Apify Store. This wrapper is MIT licensed.

Built by Mamba Labs

Source: README.md at commit af842d6

Tools

1

Version history

6
  1. v1.4.1LatestNov 5, 2026
  2. v1.4.0Oct 16, 2026
  3. v1.3.0Oct 16, 2026
  4. v1.2.1Oct 6, 2026
  5. v1.2.0Oct 6, 2026
  6. v1.1.0Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts