mcp-legal-entity-resolver
Legal Entity Resolver MCP Server
Apify의 Mamba Labs Legal Entity Resolver 액터를 위한 MCP 서버입니다.
회사 도메인을 입력하면 그 뒤에 있는 등록된 법인을 반환합니다: 법인명, 회사 번호, 관할권, 상태, LEI, VAT 번호. 도메인당 하나의 평면 행으로 24개 필드를 제공하며, Clay 또는 CRM에 바로 사용할 수 있습니다.
설치
npx -y @mambalabsdev/mcp-legal-entity-resolverClaude Desktop
{
"mcpServers": {
"mamba-legal-entity-resolver": {
"command": "npx",
"args": ["-y", "@mambalabsdev/mcp-legal-entity-resolver"],
"env": { "APIFY_TOKEN": "your-apify-token" }
}
}
}Apify 토큰은 console.apify.com/account/integrations에서 받으세요.
Related MCP server: Workplace Program Detector MCP Server
도구
resolve_legal_entity
회사 도메인을 입력하면 그 뒤에 있는 등록된 법인을 반환합니다.
입력 | 유형 | 필수 | 설명 |
| string | 예 | 단일 회사 도메인(예: monzo.com). 프로토콜과 경로는 제거됩니다. |
| string | 아니요 | 도메인 조회를 건너뛰고 이 이름으로 바로 등록부를 조회합니다. 이미 법인명을 알고 있고 등록부 기록만 필요한 경우 사용합니다. |
| string | 아니요 | ISO-2 국가 코드. |
| enum | 아니요 |
|
| boolean | 아니요 | 회사 자체 페이지에서 찾은 VAT 번호를 EU VIES 서비스로 검증하고 VIES가 보유한 이름을 반환하여 등록부 이름과 대조합니다. 기본값은 |
| enum | 아니요 |
|
null은 공백이 아니라 결과물입니다
등록부 검색 엔드포인트는 fuzzy 방식이라 항상 무언가를 반환합니다. 상위 검색 결과를 그대로 사용하면 십중팔구 자신 있게 틀린 회사 번호를 얻게 됩니다. 이 액터는 정규화 후 법인명이 동일한 경우에만 일치로 간주합니다. 그래서 10개 중 10개가 아니라 대략 10개 중 6개 도메인만 식별되며, 그 6개가 행동할 가치가 있는 이유입니다.
일치 결과를 활용하기 전에 match_method, match_confidence, rejected_candidates를 읽으세요. fuzzy 엄격도는 연구 모드입니다. 대부분의 도메인에서 자신 있게 틀린 회사를 건네줄 것입니다.
조회되는 등록부는 UK Companies House, GLEIF, SEC EDGAR 세 곳입니다.
요금
식별된 도메인당 요금이 부과되며, 소액의 액터 시작 수수료가 추가됩니다. 캐시된 결과는 식별된 회사의 경우 90일, null의 경우 7일입니다.
가격은 액터의 Apify 페이지에서 확인할 수 있습니다. 이 서버를 실행하면 Apify 크레딧이 소모됩니다.
이 서버가 하는 일과 하지 않는 일
이 서버는 Apify 액터의 얇은 클라이언트입니다. 입력을 그대로 전달하고 액터의 출력을 변경 없이 반환합니다. 위에서 설명한 모든 동작은 여기가 아니라 액터에 있습니다.
이 서버는 회사 데이터베이스도, 신용·리스크 상품도 아닙니다. 회사를 평가하거나 등급을 매기거나 거래 여부를 알려주지 않습니다. 단 하나의 질문에 답할 뿐입니다: 이 도메인 뒤에 있는 등록된 법인은 무엇인가?
오류는 숨기지 않고 표면화됩니다. 잘못된 입력, 유효하지 않은 토큰, 잔액 부족, 시간 초과, 또는 데이터셋이 아닌 다른 것을 반환하는 실행은 모두 빈 결과 대신 명시적인 도구 오류로 반환됩니다.
소스
액터는 Apify Store에 있습니다. 이 래퍼는 MIT 라이선스입니다.
Mamba Labs가 만들었습니다.
Available Tools
1 toolresolve_legal_entityResolve Legal EntityAIdempotent
Give it a company domain and it returns the registered legal entity behind it: legal name, company number, jurisdiction, status, entity type, LEI and VAT number, as one flat row with a full audit trail of what was rejected and why. Three registers are queried: UK Companies House, GLEIF and SEC EDGAR. Register search endpoints are fuzzy and always return something, so by default a record is accepted only when the normalized legal names are identical. That is why roughly 6 domains in 10 resolve rather than 10 in 10, and why a null here is a trustworthy answer rather than a gap. Read match_method, match_confidence and rejected_candidates before acting on a match. Setting match_strictness to fuzzy will hand you a confidently wrong company on most domains and should be treated as a research mode, not a default. This is not a company database and not a credit or risk product. Requires an APIFY_TOKEN and consumes Apify credits. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | A single company domain, for example monzo.com. Protocol and path are stripped. | |
| skipCache | No | false uses the cache: 90 days for a resolved company, 7 days for a null. true forces a fresh look. Default: "false". | |
| validate_vat | No | Runs 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. | |
| max_charge_usd | No | Optional spending cap for this call, in USD, passed to the actor as max_charge_usd. The run stops before any charge that would take it past this amount and keeps every row already charged. Leave empty to rely only on the maximum charge per run set on your Apify account. | |
| legal_name_hint | No | Skips 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. | |
| match_strictness | No | exact accepts a register record only when the normalized legal names are equal, which is the default and the recommendation. fuzzy returns the best scoring candidate with a confidence below 100 and a warning in rejected_candidates. Register search is fuzzy and always returns something, so fuzzy mode will hand you a confidently wrong company on most domains. Default: "exact". | |
| jurisdiction_hint | No | ISO-2 country code. GB or UK asks Companies House and GLEIF and returns a Companies House number. US asks GLEIF and SEC EDGAR. FR asks the French Sirene register and returns a SIREN. NO asks the Norwegian Brreg register and returns an organisasjonsnummer. Any other code asks GLEIF alone rather than guessing at a register with no adapter. Leave empty to query all five. Narrowing cuts latency, and registers_queried on the row records which were actually asked, so a null is never ambiguous. | |
| sec_requester_name | Yes | Required. Your own name or your company's name. The SEC requires every automated request to EDGAR to identify the requester by name and email, and the actor sends yours, never a default. | |
| sec_requester_email | Yes | Required. Your own working email address. Sent to the SEC with your name in the User-Agent of each EDGAR request, in the form the SEC asks for. Nothing else uses it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations say readOnlyHint=false, which is surprisingly defensive for a lookup; the description resolves the ambiguity by stating 'Read only' and by disclosing that it consumes Apify credits and requires an APIFY_TOKEN. It goes well beyond annotations with the 6-in-10 resolution rate, the always-returns-something register behavior, the audit trail of rejections, and the fields to read before acting. This is rich behavioral context the structured fields do not carry.
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?
The description is front-loaded with the core contract (domain in, flat row out) then layers warnings. It is dense but every sentence carries information; the only cost is that the match_method/match_confidence warning and the fuzzy warning slightly overlap.
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 9-parameter tool with no output schema, the description covers inputs, the return shape (flat row with named fields), failure semantics (nulls are meaningful), cost/auth requirements, and the caveats needed to invoke it correctly. Nothing essential is missing.
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 baseline is 3, but the description adds genuine value beyond the schema: it explains why match_strictness=fuzzy produces confidently wrong results, the default cache semantics for skipCache, and how jurisdiction_hint trades coverage for latency. The legal_name_hint alternative path is only lightly touched.
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 precise verb+resource: given a domain, it returns the registered legal entity behind it, and it enumerates the returned fields. It also draws explicit negative boundaries ('not a company database and not a credit or risk product') that no sibling tool supplies. There are no siblings, but the purpose is unmistakable.
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?
It gives clear conditions for the main behavior choice: default exact matching vs fuzzy mode, and warns fuzzy is a research mode, not a default. It also explains the null-is-trustworthy framing. It stops short of stating prerequisites like when a legal_name_hint is preferable, but the core guidance is explicit.
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.
1 tool update
v1.4.0- Changed
resolve_legal_entity6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / jurisdiction_hint / descriptionPrevious value: -"ISO-2 country code, for example GB or US. Narrows which registers are queried and cuts latency. Leave empty to query every register."New value: +"ISO-2 country code. GB or UK asks Companies House and GLEIF and returns a Companies House number. US asks GLEIF and SEC EDGAR. FR asks the French Sirene register and returns a SIREN. NO asks the Norwegian Brreg register and returns an organisasjonsnummer. Any other code asks GLEIF alone rather than guessing at a register with no adapter. Leave empty to query all five. Narrowing cuts latency, and registers_queried on the row records which were actually asked, so a null is never ambiguous." - added
Input schema / properties / max_charge_usdAdded value: +{ + "description": "Optional spending cap for this call, in USD, passed to the actor as max_charge_usd. The run stops before any charge that would take it past this amount and keeps every row already charged. Leave empty to rely only on the maximum charge per run set on your Apify account.", + "minimum": 0, + "type": "number" +} - added
Input schema / properties / sec_requester_emailAdded value: +{ + "description": "Required. Your own working email address. Sent to the SEC with your name in the User-Agent of each EDGAR request, in the form the SEC asks for. Nothing else uses it.", + "format": "email", + "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", + "type": "string" +} - added
Input schema / properties / sec_requester_nameAdded value: +{ + "description": "Required. Your own name or your company's name. The SEC requires every automated request to EDGAR to identify the requester by name and email, and the actor sends yours, never a default.", + "maxLength": 100, + "minLength": 1, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "domain" -]New value: +[ + "sec_requester_name", + "sec_requester_email", + "domain" +]
1 tool update
v1.0.0- First observed
resolve_legal_entity
TDQS
Scored across 1 tool
There is only one tool, so there is nothing to confuse it with. Its purpose (domain → registered legal entity) is stated unambiguously, including what it does not do (not a company database, not a risk product).
A single tool named resolve_legal_entity follows a clear verb_noun snake_case pattern. There is no competing convention to clash with it.
The server is deliberately scoped to one operation, and that operation is substantive (multi-register lookup with audit trail). Still, a single tool is thin for a server surface and forces any multi-domain or reverse-lookup workflow to be handled outside it.
The core read path is well covered: resolution, confidence/method metadata, rejected candidates, and multiple registers. Gaps are minor — no batch resolution of many domains and no reverse lookup (name/company number → domain), which an agent would have to loop around.
Maintenance
Related MCP Connectors
CompanyLens is a remote MCP server giving AI agents instant access to official company registry data across 19 jurisdictions in Europe, the Americas, and Asia-Pacific. Eighteen read-only tools let you search companies and people, look up officers and beneficial owners, map corporate networks through shared directors, screen names against the UK disqualified directors register, find every company at a registered address, and pull filing history — all from a single connector. Visit our website: https://companylens.io
Remote MCP server to enrich company profiles with structured B2B data and confidence scores.
Apify MCP — run web-scraping Actors and fetch their dataset results.
Identity resolution MCP server for phone/email lookups across 31+ services. Global + India coverage.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs People Finder & Email Verifier actor on Apify. Give it a company domain, name or LinkedIn URL and it returns the people at that company who match your role, seniority and department filters, each as a structured contact record with an optional verified business email.173 npmMIT
- AlicenseAqualityAmaintenanceMCP server that wraps the Apify Workplace Program Detector actor, taking a company domain and returning the employee programs it publishes, such as ERGs, DEI, wellbeing, parental leave, and volunteering.180 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs Bluesky Brand Presence Mapper actor on Apify. Resolve a company domain to its Bluesky account with exact follower, following and post counts.189 npmMIT
- AlicenseAqualityAmaintenanceMCP server for the Mamba Labs GitHub Organization Signal Scanner actor on Apify. Resolve a company domain to its GitHub organization with repo, language and activity signals.186 npmMIT