Global Legal Entity Identifier Foundation (GLEIF) MCP server — provides access to the LEI registry for entity resolution and counterparty due diligence. Free, no authentication required.
Three well-named tools with clear, actionable descriptions (150 - 200 chars each). All tools have complete input schemas with proper types and required fields. search_lei includes enum constraints for status; get_lei and get_lei_relationships accept LEI codes with clear descriptions. Output normalization is visible (normalizeRecord function), returning structured objects with typed fields. However, output schemas are not formally documented in the tool definitions, LLMs must infer response structure from descriptions. Error handling is basic (404 → 'not found', other errors → status + truncated body); no recovery guidance or actionable error messages. No parameter validation rules stated (e.g., LEI format, page_size bounds). Missing tool annotations (readOnlyHint, idempotentHint) despite all three being read-only operations.
Fetch the full Level 1 LEI record by 20-character LEI code. Returns legal name, registered address, headquarters address, entity category, legal form, registration authority, status, parent LEI (if any), and timestamps.
Fetch Level 2 corporate hierarchy for an LEI: direct parent, ultimate parent, and direct children. Use to map ownership trees across multinational groups.
Search the GLEIF LEI registry by legal entity name. Returns matched entities with their 20-character LEI, jurisdiction, status, and BIC/ISIN cross-references. Use the LEI to resolve canonical identity across SEC, OpenSanctions, and counterparty databases.
Output schemas not formally documented. Tool descriptions mention returned fields (LEI, jurisdiction, status, BIC/ISIN) but no structured schema definition is visible in tool registration. LLMs must infer response structure from prose.
Error handling lacks recovery guidance. gleifFetch() returns raw HTTP status + truncated body (e.g., 'GLEIF error: 404 ...'). No actionable next steps for LLM (e.g., 'Try search_lei() with a partial name' when LEI not found).
Missing tool annotations. All three tools are read-only (no state mutation), but no readOnlyHint or idempotentHint is declared. Agents cannot distinguish safe-to-retry tools from destructive ones.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Parameter validation rules not stated. search_lei's page_size accepts 1 - 200 but description lacks explicit bounds. get_lei's lei parameter expects 20-char alphanumeric but no format constraint or validation message is documented.
search_lei returns paginated results but no next_cursor or offset mechanism is visible. Description mentions 'page_size' but no guidance on how to fetch subsequent pages or total count handling.