MCP server for the Norwegian Central Coordinating Register for Legal Entities (Enhetsregisteret)
Four well-named tools with clear, actionable descriptions (avg 180 chars). All tools have complete input schemas with type definitions and parameter descriptions. Naming follows verb_noun pattern (search_, get_, list_). Schemas use Zod with proper constraints (regex patterns, min/max bounds). Output is structured JSON. However, output schemas are not formally documented, LLMs must infer response structure from implementation. Error handling returns plain text messages without recovery guidance or error classification. No tool annotations (readOnlyHint, idempotentHint). Parameter descriptions include format hints (e.g., 'YYYY-MM-DD', 'Nine-digit') but lack explicit enum constraints where applicable (e.g., organisationForm could be an enum of valid Norwegian legal forms).
Full register record for a single Norwegian organisation number.
Registered roles for a company — board members, chair, general manager and similar, as published in the public register.
Companies entered into the register within a recent date window, optionally filtered by municipality and legal form. Useful for tracking new business activity in an area.
Search Enhetsregisteret by name, industry code, municipality or legal form. Returns registered companies with address, industry and contact details where the register has them.
Output schemas not documented. LLMs cannot see what fields to expect from tool responses (e.g., Company interface fields, Role structure). This forces LLMs to infer response shape from implementation or trial-and-error.
Error handling returns plain text without recovery guidance. Errors like 'Invalid organisation number' do not tell the LLM what to do next (e.g., 'Try search_companies() first'). No error classification (retryable vs. user-fixable vs. fatal).
No tool annotations. Tools are read-only and idempotent but lack readOnlyHint and idempotentHint annotations. LLMs cannot distinguish safe tools from destructive ones without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Parameter values not constrained as enums. 'organisationForm' accepts free-form strings (e.g., 'AS', 'ENK', 'ANS') but lacks an enum constraint. LLMs may hallucinate invalid legal form codes. Same for 'municipalityNumber', no enum of valid Norwegian municipality codes.
Pagination not fully documented. search_companies and list_recent_registrations return 'total' and 'returned' counts but do not expose offset/cursor for fetching subsequent pages. Large result sets may be truncated without a clear way to retrieve more.