Model Context Protocol (MCP) server for the GLEIF (Global Legal Entity Identifier Foundation) REST API
The server provides 13 well-named, verb-prefixed tools with consistent parameter schemas and reasonable descriptions. However, significant gaps exist: tool descriptions lack actionable LLM guidance (e.g., when to prefer search_lei_records vs fuzzy_completions), output schemas are undocumented, error handling provides no recovery guidance, and parameter descriptions are minimal (averaging ~15 chars vs. recommended ~72 chars baseline). The server follows basic composition patterns but lacks the depth expected for production agent integration.
Return suggested search terms based on *query*.
Approximate‑match search (e.g. suggest entities similar to *query*).
Country lookup (two‑letter code, e.g. 'US').
Retrieve details for a specific legal form by its ELF code.
Retrieve metadata for a specific field (ID from list_fields).
Get details about a single LEI issuer by its numeric ID.
Retrieve a single LEI record by its 20‑character LEI code.
Output schemas entirely undocumented. Tools return 'Dict[str, Any]' with no indication of structure, required fields, or nested objects. LLMs cannot plan downstream calls or extract fields with confidence.
Parameter descriptions are minimal (10-27 chars, far below 72-char baseline). Examples: 'Field to search in', 'Partial text to match', 'Page number'. No guidance on valid field values, constraints, or when to use each tool variant.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 75 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Return ISO‑3166 country codes recognised by the API.
List Entity Legal Forms (ELF codes).
Return the catalogue of data fields that can be filtered / sorted.
Retrieve the list of accredited LEI Issuers (Managing LOUs).
Return a paginated list of LEI records (Level‑1 data).
General‑purpose LEI search using any supported filter field. Example: search_lei_records("entity.legalName", "Citibank") See the documentation for allowed fields & operators.
No error handling guidance. Tools return {'error': '...'} on failure, but provide no classification (retryable? user-fixable?), no recovery suggestions, and no actionable next steps for the LLM.
Tool descriptions lack selectivity guidance. For example, search_lei_records, fuzzy_completions, and auto_completions all perform search-like operations, but descriptions do not explain when an LLM should prefer one over another or what data each returns.
No documented pagination limits or result-size caps. Tools accept 'size' parameters but no explicit maximum is stated, risking context-window exhaustion if an LLM requests large result sets.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). While all tools are read-only, explicit annotations would improve LLM planning and risk assessment.