Brønnøysund Register Centre (BRREG) MCP — Norway's official business register. Provides access to Enhetsregisteret (entities) and Regnskapsregisteret (annual accounts). Keyless access.
BRREG MCP has well-structured tool definitions with clear naming (verb_noun pattern) and reasonable descriptions (avg 180 chars). All 6 tools have explicit input schemas with typed properties. However, parameter descriptions are sparse, many lack detail on format, constraints, or valid ranges. Output schemas are completely undocumented; LLMs cannot predict response structure. Error handling is minimal (generic HTTP errors only). No tool annotations (readOnlyHint, etc.). Composition is sound: tools are single-purpose and chainable via orgnr. Security is adequate (read-only API, no secrets in params). Naming is clear but could benefit from consistency (search_entities vs get_entity naming pattern is good, but no enum constraints on organisasjonsform or kommunenummer).
Annual financial statements (Regnskapsregisteret) for an entity by 9-digit org number. Returns an array, one element per filed year, with resultatregnskapResultat (income statement), eiendeler (assets), egenkapitalGjeld (equity & liabilities), valuta (currency), regnskapsperiode (period). e.g. {orgnr:"923609016"}.
Full record for one entity by 9-digit org number. e.g. {orgnr:"923609016"} (Equinor ASA). Returns navn, organisasjonsform, naeringskode1, forretningsadresse, antallAnsatte, stiftelsesdato, etc.
Roles for an entity — board members (styre), CEO (daglig leder), chair (styreleder), auditor, etc. by 9-digit org number. e.g. {orgnr:"923609016"}.
Full record for one sub-entity/branch (underenhet) by 9-digit org number. e.g. {orgnr:"973861883"} (Equinor ASA AVD CCB SOTRA).
Search Norwegian companies/organisations (Enhetsregisteret) by name + filters. Results under _embedded.enheter. navn=name, organisasjonsform=org form (e.g. ASA, AS, ENK), naeringskode=industry, forretningsadresse=business address. e.g. {navn:"equinor"} or {navn:"bank", organisasjonsform:"ASA", kommunenummer:"0301"}.
Output schemas completely undocumented. LLMs cannot predict response structure (e.g., _embedded.enheter nesting, field names like resultatregnskapResultat, eiendeler). Descriptions mention response fields but no formal schema.
Parameter constraints missing. organisasjonsform and kommunenummer accept free-form strings with no enum or pattern. LLMs will hallucinate invalid codes (e.g., 'INVALID_ORG_FORM'). Should declare enums or regex patterns.
Parameter descriptions lack format/constraint details. 'size' and 'page' have no min/max bounds stated. 'orgnr' description says '9-digit' but no regex pattern or validation hint. LLMs may pass invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Search sub-entities/branches (underenheter) — e.g. local establishments of a parent company. Results under _embedded.underenheter. Filter by overordnetEnhet (parent org number) and/or navn. e.g. {overordnetEnhet:"923609016"} lists Equinor branches.
Error handling is generic. callTool() throws 'Unknown tool' or HTTP errors with no recovery guidance. No categorization (retryable vs fatal). LLMs receive raw HTTP status codes with no actionable next steps.
No tool annotations. Tools are read-only but lack readOnlyHint in schema. Agents cannot infer safety/idempotency from definitions alone.