이 MCP로 할 수 있는 일
Provides Norwegian company intelligence covering ownership, roles, financials, announcements, IP, monitoring, AML/PEP screening, and corporate risk analysis.
도구
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': 'Norwegian organisation number (9 digits) to add to monitoring.'}, 'ip_alerts': {'type': 'boolean', 'title': 'Ip Alerts', 'default': True, 'description': 'Also enable IP-change alerts for this company. Default true = monitor everything. Requires the IP-monitoring add-on (ip_overvakning) on the account; without it the company is still monitored for all announcement/status/ownership changes, but IP alerts stay off. Set false to skip IP alerts.'}}}
출력 스키마
{'type': 'object', 'properties': {'ok': {'type': 'boolean', 'title': 'Ok', 'default': False, 'description': 'True when the company was added.'}, 'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'orgnr': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Orgnr', 'default': None}, 'ip_alerts_enabled': {'type': 'boolean', 'title': 'Ip Alerts Enabled', 'default': False, 'description': 'Whether IP-change alerts were turned on (false without the add-on).'}}}
입력 스키마
{'type': 'object', 'required': ['name', 'purpose'], 'properties': {'name': {'type': 'string', 'title': 'Name', 'maxLength': 200, 'minLength': 2, 'description': "Full name of ONE natural PERSON to screen (e.g. 'Ola Nordmann'). NOT a company name or orgnr â\x80\x94 for company AML use firmaradar_get_aml_score instead."}, 'purpose': {'type': 'string', 'title': 'Purpose', 'maxLength': 500, 'minLength': 4, 'description': "Legitimate purpose for this AML/PEP screening (free text, e.g. 'KYC verification for new customer acme-as'). Logged in compliance audit for 60 months."}, 'kategori': {'enum': ['sanksjon', 'pep', 'both'], 'type': 'string', 'title': 'Kategori', 'default': 'both'}, 'birth_year': {'anyOf': [{'type': 'integer', 'maximum': 2100, 'minimum': 1900}, {'type': 'null'}], 'title': 'Birth Year', 'default': None}, 'min_match_ratio': {'type': 'number', 'title': 'Min Match Ratio', 'default': 0.85, 'maximum': 1.0, 'minimum': 0.0}}}
출력 스키마
{'type': 'object', '$defs': {'AmlPepHit': {'type': 'object', 'title': 'AmlPepHit', 'required': ['primart_navn', 'kategori', 'match_ratio', 'match_type'], 'properties': {'embete': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Embete', 'default': None}, 'kilder': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Kilder'}, 'kategori': {'type': 'string', 'title': 'Kategori'}, 'pep_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Pep Type', 'default': None}, 'relasjon': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Relasjon', 'default': None}, 'verv_fra': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Verv Fra', 'default': None}, 'verv_til': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Verv Til', 'default': None}, 'ekstern_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Ekstern Id', 'default': None}, 'match_type': {'type': 'string', 'title': 'Match Type'}, 'pep_status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Pep Status', 'default': None}, 'weak_match': {'type': 'boolean', 'title': 'Weak Match', 'default': False}, 'fodselsdato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Fodselsdato', 'default': None}, 'match_ratio': {'type': 'number', 'title': 'Match Ratio'}, 'entitet_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Entitet Type', 'default': None}, 'primart_navn': {'type': 'string', 'title': 'Primart Navn'}, 'matchgrunnlag': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Matchgrunnlag', 'default': None}, 'relasjon_kode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Relasjon Kode', 'default': None}, 'verv_historikk': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Verv Historikk'}, 'fodselsdato_mangler': {'type': 'boolean', 'title': 'Fodselsdato Mangler', 'default': False}, 'relasjon_innenfor_direktivet': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Relasjon Innenfor Direktivet', 'default': None}}}}, 'required': ['query_name', 'hits', 'hit_count'], 'properties': {'hits': {'type': 'array', 'items': {'$ref': '#/$defs/AmlPepHit'}, 'title': 'Hits'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Note', 'default': None}, 'hit_count': {'type': 'integer', 'title': 'Hit Count'}, 'query_name': {'type': 'string', 'title': 'Query Name'}, 'query_too_short': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Query Too Short', 'default': None, 'description': 'True: query < 5 chars, substring discovery skipped â\x80\x94 a zero hit_count does NOT confirm the name is clean. False: not applicable. null: not reported by the server â\x80\x94 unknown, not OK.'}, 'search_degraded': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Search Degraded', 'default': None, 'description': 'True: trigram/alias candidate discovery was unavailable â\x80\x94 a zero hit_count does NOT confirm the name is clean. False: full search ran. null: not reported by the server â\x80\x94 unknown, not OK.'}, 'query_birth_year': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Query Birth Year', 'default': None}, 'results_truncated': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Results Truncated', 'default': None, 'description': 'True: server-side hit cap reached, list may be incomplete. False: complete. null: not reported by the server â\x80\x94 unknown, not complete.'}}}
입력 스키마
{'type': 'object', 'required': ['orgnrs'], 'properties': {'orgnrs': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Orgnrs', 'maxItems': 50, 'minItems': 1, 'description': 'List of 1-50 nine-digit Norwegian organization numbers. Each orgnr counts as one unit against your quota.'}, 'skip_freshness': {'type': 'boolean', 'title': 'Skip Freshness', 'default': False, 'description': 'If True, accept FIV-data even if the underlying regnskap- or BRREG-snapshot is older than the normal freshness window. Use sparingly â\x80\x94 recommended only for retrospective screening.'}}}
출력 스키마
{'type': 'object', '$defs': {'BulkMeta': {'type': 'object', 'title': 'BulkMeta', 'required': ['total_requested', 'successful', 'failed'], 'properties': {'failed': {'type': 'integer', 'title': 'Failed'}, 'successful': {'type': 'integer', 'title': 'Successful'}, 'total_requested': {'type': 'integer', 'title': 'Total Requested'}}}, 'BulkFivResult': {'type': 'object', 'title': 'BulkFivResult', 'required': ['orgnr'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'error': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Error', 'default': None, 'description': "Error type when the assessment could not be completed. Validation: `invalid_orgnr`. Rollout/configuration (shared extension dispatcher): `extension_not_active`, `extension_controls_unavailable`, `data_provider_failed`, `handler_not_found`, `handler_http_exception`, `handler_failed`, `unexpected_handler_return`. The bulk runner itself: `internal_error` (outside the dispatcher). On a runtime-control failure (rate limit, compliance gate) `error` is NOT one of the codes above â\x80\x94 the field then keeps the control layer's human-readable text, and the machine code lives in `error_code`. The same text is mirrored in `message`. The distress assessment has NO organization-form gate â\x80\x94 there is no ENK error code here."}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Score', 'default': None}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None, 'description': 'FIV (foretak i vanskeligheter / company-in-difficulty) status when available: not_distressed, distressed, insufficient_data, exempt_young_company, not_distressed_partial. Absent when error is set.'}, 'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Message', 'default': None, 'description': 'Human-readable detail from the runtime-control layer.'}, 'confidence': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Confidence', 'default': None}, 'error_code': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Error Code', 'default': None, 'description': 'Stable machine code for runtime-control failures, set additively by the dispatcher when a control BEFORE the handler rejects the call. Rate limit: `rate_limit_exceeded`. Compliance gate: `compliance_gate_revoked`, `compliance_gate_expired`, `compliance_gate_manifest_unavailable`, `compliance_gate_unavailable`. Which gate reasons can occur follows the extension manifest, and the distress module requires no external authorization â\x80\x94 that gate reason does not exist here. The distress handler does not set the field itself, and neither do the dispatcher and runner errors (including the 503 response when the extension controls cannot be read): they live in `error` only. An absent `error_code` means "not a runtime-control failure", not "no error". Always read `error` as well.'}, 'http_status': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Http Status', 'default': None, 'description': 'HTTP status this per-company result would have had outside the outer HTTP-200 bulk response.'}, 'retry_after': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Retry After', 'default': None, 'description': 'Retry-After header value when the row was rate limited.'}, 'distress_basis': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Distress Basis', 'default': None, 'description': "Which level of the two-level assessment makes the company distressed: company, group or company_and_group. 'group' means the company's own accounts are clean but its group is in difficulty â\x80\x94 sufficient under GBER art. 2(18)."}, 'classifier_version': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Classifier Version', 'default': None, 'description': 'Immutable version stamp for the FIV rule set used.'}, 'rescuable_by_group': {'type': 'boolean', 'title': 'Rescuable By Group', 'default': False, 'description': 'True when the company triggers only the capital criterion and its group is sound enough to remedy it before the aid is granted.'}, 'verdict_presentation': {'anyOf': [{'$ref': '#/$defs/FivVerdictPresentation'}, {'type': 'null'}], 'default': None, 'description': 'Qualified display verdict. Label and caveat footnote are one object; missing or incomplete legacy blocks yield null, never a guessed clean verdict.'}, 'classifier_version_sequence': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'title': 'Classifier Version Sequence', 'default': None, 'description': 'Authoritative monotonic ordering key for classifier_version; compare this field, not the version string, to order rule sets.'}}, 'description': 'Per-organization result in a bulk FIV response.'}, 'FivVerdictPresentation': {'type': 'object', 'title': 'FivVerdictPresentation', 'required': ['label', 'qualification_status'], 'properties': {'label': {'type': 'string', 'title': 'Label', 'description': 'Human-readable, qualified FIV verdict label.'}, 'footnote': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Footnote', 'default': None, 'description': 'Mandatory qualification when qualification_status is present, including open-data, group-level and rescuable verdicts.'}, 'has_caveat': {'type': 'boolean', 'title': 'Has Caveat', 'default': False, 'description': 'Whether the label carries the open-data (*) marker. This is distinct from whether another material qualification is required.'}, 'qualification_status': {'enum': ['not_required', 'present'], 'type': 'string', 'title': 'Qualification Status', 'description': 'Whether this verdict requires no qualification or carries the required qualification. A missing required qualification rejects the entire presentation instead of producing this object.'}}}}, 'required': ['_meta'], 'properties': {'_meta': {'$ref': '#/$defs/BulkMeta', 'description': 'Aggregate count status for the whole bulk call.'}, 'results': {'type': 'array', 'items': {'$ref': '#/$defs/BulkFivResult'}, 'title': 'Results'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None, 'description': 'Human-readable markdown table of the per-company FIV verdicts.'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit norwegian organization number.'}}}
출력 스키마
{'type': 'object', '$defs': {'FivRule': {'type': 'object', 'title': 'FivRule', 'required': ['rule_id', 'severity'], 'properties': {'rule_id': {'type': 'string', 'title': 'Rule Id'}, 'severity': {'type': 'string', 'title': 'Severity'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Description', 'default': None}}}, 'RescueEstimate': {'type': 'object', 'title': 'RescueEstimate', 'properties': {'frist': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Frist', 'default': None, 'description': 'Deadline â\x80\x94 no later than the point the aid is granted.'}, 'konsernbidrag_min_nok': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Konsernbidrag Min Nok', 'default': None, 'description': 'Minimum group contribution / grant, in NOK.'}, 'kapitalforhoyelse_min_nok': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Kapitalforhoyelse Min Nok', 'default': None, 'description': 'Minimum share-capital increase, in NOK.'}}, 'description': 'Hva konsernet mÃ¥ tilføre for Ã¥ fjerne kapitalkriteriet (a).'}, 'GroupAssessment': {'type': 'object', 'title': 'GroupAssessment', 'properties': {'basis': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Basis', 'default': None, 'description': 'Data basis: konsernregnskap (filed consolidated accounts), aggregert_selskapsregnskap (individual accounts summed arithmetically â\x80\x94 indicative, intra-group balances are not eliminated), utenlandsk_majoritet or ingen_data.'}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None, 'description': "Group-level outcome: clean, distressed, doubt or unknown. 'unknown' means the group could not be assessed (typically a foreign parent, which does not exist as an entity in Norwegian registries)."}, 'evaluated': {'type': 'boolean', 'title': 'Evaluated', 'default': False, 'description': 'False when the company is not part of any group.'}, 'root_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Root Name', 'default': None}, 'truncated': {'type': 'boolean', 'title': 'Truncated', 'default': False}, 'root_orgnr': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Root Orgnr', 'default': None}, 'members_total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Members Total', 'default': None}, 'root_org_form': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Root Org Form', 'default': None, 'description': "The root member's raw BRREG org_form code (before normalization), or null if unknown. Exposed for transparency/debugging."}, 'root_distressed': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Root Distressed', 'default': None, 'description': 'Whether the group head itself is in difficulty. Null means its status could not be established; false means established and healthy.'}, 'size_ansatte_sum': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Size Ansatte Sum', 'default': None, 'description': 'Sum over the >50%-control ownership tree (§16-40-5(2)-(3)); null when no member reported this field.'}, 'members_evaluated': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Members Evaluated', 'default': None}, 'capital_loss_ratio': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Capital Loss Ratio', 'default': None, 'description': "Share of the group's subscribed capital lost to accumulated losses."}, 'has_public_controller': {'type': 'boolean', 'title': 'Has Public Controller', 'default': False, 'description': 'True if the root of the >50%-control ownership tree is an unambiguous public-sector entity (§16-40-5(4)) â\x80\x94 disqualifies SMB status regardless of size.'}, 'size_ansatte_complete': {'type': 'boolean', 'title': 'Size Ansatte Complete', 'default': False, 'description': 'False until period-aligned annual work units are available; current BRREG headcount is not a complete employee measure.'}, 'size_balansesum_sum_nok': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Size Balansesum Sum Nok', 'default': None, 'description': 'NOK balance-sheet-total sum over the >50%-control ownership tree (§16-40-5(2)-(3)); null when no member reported this field.'}, 'size_balansesum_complete': {'type': 'boolean', 'title': 'Size Balansesum Complete', 'default': False, 'description': 'True when the selected value comes from a usable filed consolidated statement, or every evaluated member reported this field and the tree was not truncated â\x80\x94 otherwise it is an incomplete subtotal, not threshold evidence.'}, 'size_sum_is_consolidated': {'type': 'boolean', 'title': 'Size Sum Is Consolidated', 'default': False, 'description': "True only if both revenue and balance-sheet totals come from a filed consolidated (regnskapstype=KONSERN) statement, already eliminated by an auditor â\x80\x94 false means at least one naive standalone-account sum may overstate the group's size due to non-eliminated intra-group transactions."}, 'public_controller_unknown': {'type': 'boolean', 'title': 'Public Controller Unknown', 'default': False, 'description': "True when the root is missing among the classified members, or its org_form is unknown â\x80\x94 has_public_controller=False then does NOT confirm the root is private, only that it isn't known."}, 'size_driftsinntekter_sum_nok': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Size Driftsinntekter Sum Nok', 'default': None, 'description': 'NOK revenue sum over the >50%-control ownership tree (§16-40-5(2)-(3)); null when no member reported this field.'}, 'size_driftsinntekter_complete': {'type': 'boolean', 'title': 'Size Driftsinntekter Complete', 'default': False, 'description': 'True when the selected value comes from a usable filed consolidated statement, or every evaluated member reported this field and the tree was not truncated â\x80\x94 otherwise it is an incomplete subtotal, not threshold evidence.'}}, 'description': 'Konsern-leddet i to-nivÃ¥-testen (GBER art. 2(18)).'}, 'FivVerdictPresentation': {'type': 'object', 'title': 'FivVerdictPresentation', 'required': ['label', 'qualification_status'], 'properties': {'label': {'type': 'string', 'title': 'Label', 'description': 'Human-readable, qualified FIV verdict label.'}, 'footnote': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Footnote', 'default': None, 'description': 'Mandatory qualification when qualification_status is present, including open-data, group-level and rescuable verdicts.'}, 'has_caveat': {'type': 'boolean', 'title': 'Has Caveat', 'default': False, 'description': 'Whether the label carries the open-data (*) marker. This is distinct from whether another material qualification is required.'}, 'qualification_status': {'enum': ['not_required', 'present'], 'type': 'string', 'title': 'Qualification Status', 'description': 'Whether this verdict requires no qualification or carries the required qualification. A missing required qualification rejects the entire presentation instead of producing this object.'}}}}, 'required': ['orgnr', 'status', 'score', 'confidence'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'score': {'type': 'number', 'title': 'Score', 'description': 'Confidence-weighted distress score in [0.0, 1.0].'}, 'status': {'type': 'string', 'title': 'Status', 'description': "One of: not_distressed, insufficient_data, not_distressed_partial, exempt_young_company, distressed. Reflects BOTH levels of the assessment â\x80\x94 a company with clean accounts is 'distressed' when its group is."}, 'verdict': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Verdict', 'default': None, 'deprecated': True, 'description': 'Deprecated display label retained for backwards compatibility. Use verdict_presentation for the qualified label and mandatory caveat. Scheduled for removal in firmaradar-mcp 0.8.0, after the structured replacement has been available throughout the 0.7.x release line.'}, 'confidence': {'type': 'number', 'title': 'Confidence', 'description': 'Data-completeness confidence in [0.0, 1.0].'}, 'rules_fired': {'type': 'array', 'items': {'$ref': '#/$defs/FivRule'}, 'title': 'Rules Fired'}, 'company_status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Status', 'default': None, 'description': 'The company-level result alone, before the group level was applied.'}, 'distress_basis': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Distress Basis', 'default': None, 'description': 'Which level makes the company distressed: company, group or company_and_group. Null when not distressed.'}, 'rescue_estimate': {'anyOf': [{'$ref': '#/$defs/RescueEstimate'}, {'type': 'null'}], 'default': None}, 'group_assessment': {'anyOf': [{'$ref': '#/$defs/GroupAssessment'}, {'type': 'null'}], 'default': None}, 'classifier_version': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Classifier Version', 'default': None, 'description': 'Immutable version stamp for the FIV rule set used.'}, 'rescuable_by_group': {'type': 'boolean', 'title': 'Rescuable By Group', 'default': False, 'description': 'True when the group can lift the company out of difficulty by injecting capital before the aid is granted.'}, 'verdict_presentation': {'anyOf': [{'$ref': '#/$defs/FivVerdictPresentation'}, {'type': 'null'}], 'default': None, 'description': "Qualified display verdict. Label and mandatory caveat footnote travel as one object; a caveated 'No (*)' is never returned without its text."}, 'classifier_version_sequence': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'title': 'Classifier Version Sequence', 'default': None, 'description': 'Authoritative monotonic ordering key for classifier_version; compare this field, not the version string, to order rule sets.'}}}
입력 스키마
{'type': 'object', 'required': ['navn'], 'properties': {'navn': {'type': 'string', 'title': 'Navn', 'minLength': 2, 'description': "Full name to screen (min 2 characters), e.g. 'Karl Petter Ulriksen'."}, 'purpose': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Purpose', 'default': None, 'description': 'Purpose-of-processing string for the F10.11 audit trail. Required when calling against accounts with purpose-confirmation.'}}}
출력 스키마
{'type': 'object', '$defs': {'KonkursForetak': {'type': 'object', 'title': 'KonkursForetak', 'properties': {'orgnr': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Orgnr', 'default': None}, 'tiltradt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Tiltradt', 'default': None}, 'rolletype': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Rolletype', 'default': None}, 'konkursdato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Konkursdato', 'default': None}, 'tenure_days': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Tenure Days', 'default': None}}}}, 'required': ['navn'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Note', 'default': None}, 'foretak': {'type': 'array', 'items': {'$ref': '#/$defs/KonkursForetak'}, 'title': 'Foretak'}, 'antall_konkursforetak': {'type': 'integer', 'title': 'Antall Konkursforetak', 'default': 0}}}
입력 스키마
{'type': 'object', 'required': ['orgnrs'], 'properties': {'years': {'type': 'integer', 'title': 'Years', 'default': 5, 'maximum': 10, 'minimum': 1}, 'orgnrs': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Orgnrs', 'maxItems': 5, 'minItems': 1, 'description': '1-5 unique orgnr to compare side-by-side; duplicates are invalid.', 'uniqueItems': True}, 'metrics': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Metrics', 'default': None, 'description': 'Optional subset of metrics: omsetning, driftsresultat, aarsresultat, sum_egenkapital, sum_gjeld, antall_ansatte. Omit for the standard set.'}}}
출력 스키마
{'type': 'object', 'required': ['orgnrs', 'years', 'comparison', 'computed_at'], 'properties': {'years': {'type': 'array', 'items': {'type': 'integer'}, 'title': 'Years'}, 'orgnrs': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Orgnrs'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'comparison': {'type': 'object', 'title': 'Comparison', 'description': '{<metric>: {<orgnr>: [<value_per_year>, ...]}}. For `antall_ansatte` the per-year lists are always null â\x80\x94 headcount does not exist per fiscal year; use the top-level `antall_ansatte` field instead.', 'additionalProperties': {'type': 'object', 'additionalProperties': {'type': 'array', 'items': {}}}}, 'currencies': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': 'array', 'items': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}}, {'type': 'null'}], 'title': 'Currencies', 'default': None, 'description': "{<orgnr>: [<ISO 4217 currency per year, aligned with `years`>]}. None for years without data. Amounts in `comparison` are in the company's reporting currency for that year (NOK for most Norwegian companies) â\x80\x94 do not compare amounts across different currencies without converting."}, 'computed_at': {'type': 'string', 'title': 'Computed At'}, 'antall_ansatte': {'anyOf': [{'type': 'object', 'additionalProperties': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, {'type': 'null'}], 'title': 'Antall Ansatte', 'default': None, 'description': '{<orgnr>: <current headcount|null>}. Present only when `antall_ansatte` is in the requested metric set. CURRENT value from Enhetsregisteret (the register attribute has no per-year history), mirroring `companies[].antall_ansatte` on the server-side compare endpoint. Null is NOT self-explanatory and has at least three causes, which this field cannot tell apart: (a) the register has no headcount for that company; (b) the value was withheld from you â\x80\x94 see `utelatte_felter` and `utelatelsesarsak`; or (c) the per-company history request failed or timed out, which is swallowed per company so one bad response does not fail the whole comparison. Never report null as "unknown headcount" without checking `utelatte_felter` first, and treat a full column of nulls as suspect rather than as fact about Norway.'}, 'utelatt_av_plan': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Utelatt Av Plan', 'default': None, 'deprecated': True, 'description': 'Deprecated compatibility alias for `utelatte_felter`. It is populated only when `utelatelsesarsak` is explicitly `tier_required`; it is null for verification failures, missing or legacy diagnostics, conflicting diagnoses, and normal responses. New consumers must use the neutral fields.'}, 'utelatte_felter': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Utelatte Felter', 'default': None, 'description': 'Lists the requested metrics whose SOURCE was redacted for you â\x80\x94 e.g. ["omsetning", "antall_ansatte"]. Absent when nothing was redacted. Read its contents, do not test for the key. ð\x9f\x94\x91 It marks REDACTION OF THE SOURCE, not proof that a value existed. For the financial series the whole history payload is emptied, so no per-metric evidence survives: a listed metric may still have been null for a given company anyway. Only antall_ansatte has its own surviving evidence and is listed solely when it was genuinely removed. Read it as "not available to you here", and note the three limits on what it proves. (1) It does NOT mean every null in those fields was withheld: a listed field may still be null for a company the register simply has no value for. It marks the response, not the individual cells. (2) It is stated once for the whole response and does NOT tell you which company or which value was affected. Withholding normally follows the caller and then covers all of them, but the access check runs independently per company request and fails closed on its own errors, so a transient fault can strip one company and not another. Never infer that every company was equally affected. (3) The usual cause is that the caller has no active API/MCP/machine subscription. Upgrading grants access to the source; it does not prove that the source contains a value for every requested metric. The backend also redacts when it cannot verify a subscription at all (it fails closed on a database error), so a paying customer can see this marker during an incident. Treat it as a reason to check access, not as a settled statement about the account.'}, 'utelatelsesarsak': {'anyOf': [{'enum': ['tier_required', 'verification_unavailable', 'unknown'], 'type': 'string'}, {'type': 'null'}], 'title': 'Utelatelsesarsak', 'default': None, 'description': 'Why the fields in `utelatte_felter` were omitted. `tier_required` means the REST producer explicitly reported that access requires a machine-channel tier; `verification_unavailable` means access could not be verified and the backend failed closed; `unknown` covers legacy, missing, unrecognised, or conflicting per-company producer diagnostics. Never treat `unknown` or `verification_unavailable` as proof that the account lacks a subscription. Null when no requested source was detected as omitted.'}}}
입력 스키마
{'type': 'object', 'properties': {}, 'description': 'Tom input â\x80\x94 disclaimer-versjon og -tekst er innebygd i tool-\nhandleren slik at agenten ikke trenger Ã¥ gjette eller hardkode dem.\n\nDesignvalg: agenten bør lese tool-beskrivelsen som forklarer at\nbekreftelsen forplikter brukeren, og samtykke ved Ã¥ kalle tool-en\npÃ¥ vegne av en bruker som har gitt eksplisitt instruksjon.'}
출력 스키마
{'type': 'object', 'required': ['confirmed', 'version', 'confirmed_by_user_id'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'version': {'type': 'string', 'title': 'Version', 'description': "Disclaimer version that was confirmed (e.g. 'v1')."}, 'audit_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Audit Id', 'default': None, 'description': 'ID of the audit row in ``extension_kundebekreftelse_event``.'}, 'confirmed': {'type': 'boolean', 'title': 'Confirmed', 'description': 'True if the disclaimer is confirmed for the user.'}, 'idempotent': {'type': 'boolean', 'title': 'Idempotent', 'default': False, 'description': 'True if the confirmation already existed (no new row written).'}, 'confirmed_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Confirmed At', 'default': None, 'description': 'ISO timestamp of the confirmation.'}, 'confirmed_by_user_id': {'type': 'integer', 'title': 'Confirmed By User Id', 'description': 'ID of the Firmaradar user the confirmation is registered against.'}}}
입력 스키마
{'type': 'object', 'required': ['to_currency'], 'properties': {'amount_nok': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Amount Nok', 'default': None, 'description': "Amount in NOK to convert. Omit to fetch only the current rate (the response 'amount' will be null)."}, 'to_currency': {'type': 'string', 'title': 'To Currency', 'description': 'Target ISO 4217 currency code. Supported: EUR, USD, GBP, SEK, DKK.'}}}
출력 스키마
{'type': 'object', 'required': ['currency', 'rate'], 'properties': {'rate': {'type': 'number', 'title': 'Rate', 'description': 'Multiplier applied: amount = amount_nok * rate (target units per NOK).'}, 'amount': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Amount', 'default': None, 'description': 'Converted amount in the target currency.'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'norges_bank', 'description': 'Rate source.'}, 'currency': {'type': 'string', 'title': 'Currency', 'description': 'Target currency (ISO 4217).'}, 'rate_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Rate Date', 'default': None, 'description': 'ISO date of the Norges Bank observation.'}, 'amount_nok': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Amount Nok', 'default': None, 'description': 'The original NOK amount (preserved, unchanged).'}}}
입력 스키마
{'type': 'object', 'required': ['subscription_id'], 'properties': {'subscription_id': {'type': 'integer', 'title': 'Subscription Id', 'description': 'The id of the subscription to delete (from list_my_subscriptions). Must belong to the authenticated user.'}}}
출력 스키마
{'type': 'object', 'required': ['deleted', 'id'], 'properties': {'id': {'type': 'integer', 'title': 'Id', 'description': 'The id that was targeted.'}, 'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'deleted': {'type': 'boolean', 'title': 'Deleted', 'description': 'True if the subscription was removed.'}, 'already_absent': {'type': 'boolean', 'title': 'Already Absent', 'default': False, 'description': 'True if no subscription with that id existed for the user (nothing to delete).'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr', 'via'], 'properties': {'via': {'enum': ['person', 'address', 'owner'], 'type': 'string', 'title': 'Via', 'description': "'person' = shared board members/shareholders. 'address' = same forretningsadresse. 'owner' = shares significant owners (>=10%) via the shareholder-book ownership graph (heavier â\x80\x94 owner-graph traversal)."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 25, 'maximum': 100, 'minimum': 1}, 'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit orgnr â\x80\x94 the company to find relations for.'}, 'min_overlap': {'type': 'integer', 'title': 'Min Overlap', 'default': 1, 'minimum': 1, 'description': 'When via=person/owner: minimum number of shared entities to qualify.'}}}
출력 스키마
{'type': 'object', '$defs': {'RelatedCompany': {'type': 'object', 'title': 'RelatedCompany', 'required': ['orgnr', 'navn', 'relation_strength'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'shared_entities': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Shared Entities'}, 'relation_strength': {'type': 'integer', 'title': 'Relation Strength', 'description': 'Higher = stronger relation.'}}}}, 'required': ['orgnr', 'via', 'related', 'total_count'], 'properties': {'via': {'type': 'string', 'title': 'Via'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'related': {'type': 'array', 'items': {'$ref': '#/$defs/RelatedCompany'}, 'title': 'Related'}, 'total_count': {'type': 'integer', 'title': 'Total Count'}}}
입력 스키마
{'type': 'object', 'required': ['orgnrs'], 'properties': {'orgnrs': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Orgnrs', 'maxItems': 10, 'minItems': 2, 'description': '2â\x80\x9310 Norwegian organisation numbers (9 digits each) to analyse together.'}}}
출력 스키마
{'type': 'object', 'properties': {'graf': {'type': 'object', 'title': 'Graf', 'description': '{noder, kanter} for graph rendering.', 'additionalProperties': True}, 'meta': {'type': 'object', 'title': 'Meta', 'additionalProperties': True}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'selskaper': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Selskaper', 'description': 'Companies analysed ({orgnr, navn}).'}, 'risiko_niva': {'type': 'string', 'title': 'Risiko Niva', 'default': 'ukjent'}, 'felles_eiere': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Felles Eiere'}, 'risiko_score': {'type': 'number', 'title': 'Risiko Score', 'default': 0.0}, 'stiftet_tett': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Stiftet Tett'}, 'felles_adresser': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Felles Adresser'}, 'felles_personer': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Felles Personer'}, 'felles_morselskap': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Felles Morselskap'}, 'risiko_indikatorer': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Risiko Indikatorer'}, 'sirkulaer_eierskap': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Sirkulaer Eierskap'}, 'felles_revisor_selskap': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Felles Revisor Selskap'}}}
입력 스키마
{'type': 'object', 'required': ['report_id'], 'properties': {'report_id': {'type': 'string', 'title': 'Report Id', 'description': 'The report_id returned by `start_aml_report`.'}}}
출력 스키마
{'type': 'object', 'required': ['report_id', 'status'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'error': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Error', 'default': None, 'description': "Failure reason (only when status='failed')."}, 'level': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Level', 'default': None, 'description': "low/medium/high (only when status='done')."}, 'orgnr': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Orgnr', 'default': None}, 'score': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Score', 'default': None, 'description': "AML risk score 0-100 (only when status='done')."}, 'status': {'type': 'string', 'title': 'Status', 'description': 'One of: pending, running, done, failed.'}, 'report_id': {'type': 'string', 'title': 'Report Id'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit norwegian organization number.'}, 'purpose': {'enum': ['kyc_onboarding', 'kyc_review', 'risk_monitoring', 'manual'], 'type': 'string', 'title': 'Purpose', 'default': 'kyc_onboarding', 'description': 'Purpose of the screening â\x80\x94 recorded for audit trail.'}}}
출력 스키마
{'type': 'object', '$defs': {'AmlFactor': {'type': 'object', 'title': 'AmlFactor', 'required': ['id', 'weight', 'triggered'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'weight': {'type': 'integer', 'title': 'Weight'}, 'details': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Details', 'default': None}, 'triggered': {'type': 'boolean', 'title': 'Triggered'}}}}, 'required': ['orgnr', 'score', 'level'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'level': {'type': 'string', 'title': 'Level', 'description': "One of: low, medium, high â\x80\x94 or 'pending' when the report is still generating (poll `get_aml_report` with rapport_id)."}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'score': {'type': 'integer', 'title': 'Score', 'description': 'AML risk score 0-100 (higher = riskier).'}, 'factors': {'type': 'array', 'items': {'$ref': '#/$defs/AmlFactor'}, 'title': 'Factors', 'description': 'Always empty for the async report flow â\x80\x94 factor detail lives in the stored report (json_url/pdf_url in `raw` when done).'}, 'rapport_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Rapport Id', 'default': None, 'description': 'Persistent report-id for compliance audit (retrievable later).'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': 'Norwegian organisation number â\x80\x94 exactly 9 digits.'}, 'fields': {'type': 'array', 'items': {'enum': ['group', 'owners', 'business_owners', 'full_owners', 'grants', 'brreg_grants', 'ip', 'changes', 'financial_metrics'], 'type': 'string'}, 'title': 'Fields', 'description': 'Subset of sections to include. Omit to get the default profile. Notable opt-in sections: `ip` â\x80\x94 intellectual-property portfolio (patents, trademarks and designs from Patentstyret); `group` â\x80\x94 full group structure; `owners`/`business_owners`/`full_owners` â\x80\x94 ownership tiers; `grants` â\x80\x94 public grants; `changes` â\x80\x94 recent register changes; `financial_metrics` â\x80\x94 accounting figures.'}, 'owners': {'anyOf': [{'enum': ['business', 'full'], 'type': 'string'}, {'type': 'null'}], 'title': 'Owners', 'default': None, 'description': "Owner-tier requested. 'full' requires Full eierskapsoversikt tier."}, 'include_financial_metrics': {'type': 'boolean', 'title': 'Include Financial Metrics', 'default': False}}}
출력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None, 'description': "The server's response as received, without local enrichment."}, 'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None, 'description': 'Canonical Firmaradar source URL for this company â\x80\x94 cite this.'}, 'navn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Navn', 'default': None}, 'eiere': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Eiere', 'default': None}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Firmaradar', 'description': 'Authoritative source name.'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None, 'description': 'Human-readable summary (LLM-friendly).'}, 'endringer': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Endringer', 'default': None}, 'tildelinger': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Tildelinger', 'default': None}, 'ip_rettigheter': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Ip Rettigheter', 'default': None}, 'konsernstruktur': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Konsernstruktur', 'default': None}, 'brreg_tildelinger': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Brreg Tildelinger', 'default': None}, 'financial_metrics': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Financial Metrics', 'default': None}, 'foretaksklassifisering': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Foretaksklassifisering', 'default': None}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit orgnr.'}}}
출력 스키마
{'type': 'object', '$defs': {'Announcement': {'type': 'object', 'title': 'Announcement', 'required': ['dato', 'kunngjoring_type', 'category'], 'properties': {'dato': {'type': 'string', 'title': 'Dato', 'description': 'ISO 8601 date (YYYY-MM-DD).'}, 'navn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Navn', 'default': None}, 'category': {'type': 'string', 'title': 'Category', 'description': "Normalised Norwegian category: 'konkurs' (bankruptcy), 'fusjon' (merger), 'fisjon' (demerger), 'eierbytte' (change of ownership), 'aarsregnskap' (annual accounts), ..."}, 'hendelse_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Hendelse Type', 'default': None}, 'kunngjoring_type': {'type': 'string', 'title': 'Kunngjoring Type', 'description': "Raw BRREG label, e.g. 'Konkursåpning' (bankruptcy opening)."}}}}, 'required': ['orgnr', 'count', 'items'], 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/Announcement'}, 'title': 'Items'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit orgnr.'}, 'years': {'type': 'integer', 'title': 'Years', 'default': 5, 'maximum': 20, 'minimum': 1}, 'regnskapstype': {'enum': ['SELSKAP', 'KONSERN'], 'type': 'string', 'title': 'Regnskapstype', 'default': 'SELSKAP'}, 'skip_freshness': {'type': 'boolean', 'title': 'Skip Freshness', 'default': False, 'description': 'Skip the inline freshness fetch (faster, but may return stale data).'}}}
출력 스키마
{'type': 'object', '$defs': {'FinancialYear': {'type': 'object', 'title': 'FinancialYear', 'required': ['aar'], 'properties': {'aar': {'type': 'integer', 'title': 'Aar'}, 'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'valuta': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Valuta', 'default': None, 'description': 'Reporting currency for this year (ISO 4217). None means NOK.'}, 'omsetning': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Omsetning', 'default': None}, 'sum_gjeld': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Sum Gjeld', 'default': None}, 'aarsresultat': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Aarsresultat', 'default': None}, 'antall_ansatte': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Antall Ansatte', 'default': None}, 'driftsresultat': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Driftsresultat', 'default': None}, 'sum_egenkapital': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Sum Egenkapital', 'default': None}}}}, 'required': ['orgnr', 'regnskapstype', 'years'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'years': {'type': 'array', 'items': {'$ref': '#/$defs/FinancialYear'}, 'title': 'Years'}, 'valuta': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Valuta', 'default': None, 'description': "Reporting currency across the series (ISO 4217, e.g. 'NOK' or 'USD'). 'MIXED' when the years are filed in different currencies â\x80\x94 then check valuta per year before comparing amounts across years."}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'freshness': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Freshness', 'default': None}, 'regnskapstype': {'type': 'string', 'title': 'Regnskapstype'}, 'utelatte_felter': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Utelatte Felter', 'default': None, 'description': 'Lists financial fields whose SOURCE was omitted from this response. It does not prove that every listed field had a non-null value in every year. `antall_ansatte` is listed only when surviving classification evidence proves that a measured headcount was removed. Null when no source omission was detected.'}, 'utelatelsesarsak': {'anyOf': [{'enum': ['tier_required', 'verification_unavailable', 'unknown'], 'type': 'string'}, {'type': 'null'}], 'title': 'Utelatelsesarsak', 'default': None, 'description': 'Why `utelatte_felter` was omitted: `tier_required` means the REST producer explicitly reported that access requires a machine-channel tier; `verification_unavailable` means access could not be verified and the backend failed closed; `unknown` covers legacy, missing, or unrecognised producer diagnostics. Never treat `unknown` or `verification_unavailable` as proof that the account lacks a subscription. Null when nothing was omitted.'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': 'Norwegian organisation number â\x80\x94 exactly 9 digits.'}}}
출력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None, 'description': 'Canonical Firmaradar source URL.'}, 'navn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Navn', 'default': None}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'rights': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Rights'}, 'source': {'type': 'string', 'title': 'Source', 'default': 'Firmaradar / Patentstyret', 'description': 'Authoritative source.'}, 'designs': {'type': 'integer', 'title': 'Designs', 'default': 0}, 'patents': {'type': 'integer', 'title': 'Patents', 'default': 0}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'available': {'type': 'boolean', 'title': 'Available', 'default': False, 'description': 'Whether Patentstyret IP data was found.'}, 'trademarks': {'type': 'integer', 'title': 'Trademarks', 'default': 0}, 'rights_more': {'type': 'integer', 'title': 'Rights More', 'default': 0, 'description': 'Antall rettigheter ut over `rights`-lista.'}, 'designs_active': {'type': 'integer', 'title': 'Designs Active', 'default': 0}, 'patents_active': {'type': 'integer', 'title': 'Patents Active', 'default': 0}, 'trademarks_active': {'type': 'integer', 'title': 'Trademarks Active', 'default': 0}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'depth': {'type': 'integer', 'title': 'Depth', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'Max recursion depth.'}, 'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': 'Norwegian organisation number â\x80\x94 9 digits.'}, 'direction': {'enum': ['down', 'up', 'both'], 'type': 'string', 'title': 'Direction', 'default': 'down', 'description': "'down' = who this company owns. 'up' = who owns this company (UBO). 'both' = both trees."}, 'min_share_pct': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'title': 'Min Share Pct', 'default': None, 'description': 'Drop branches where ownership < this percentage.'}, 'include_persons': {'type': 'boolean', 'title': 'Include Persons', 'default': False, 'description': "Include sensitive personal shareholders (UBO). This is a consent control, not a subscription tier. For direct API-key calls, enable the key's own consent and include the target orgnr in its allowlist when one is configured. OAuth MCP access requires both explicit connector-key consent and the current account setting. Without it the call is rejected with 403. Only applies when direction is up or both â\x80\x94 direction=down returns holdings only, never contains persons, and is allowed without consent. Omitting direction uses the route default 'down'."}}}
출력 스키마
{'type': 'object', 'required': ['orgnr', 'direction', 'depth', 'tree'], 'properties': {'tree': {'type': 'object', 'title': 'Tree', 'additionalProperties': True}, 'depth': {'type': 'integer', 'title': 'Depth'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'direction': {'type': 'string', 'title': 'Direction'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit orgnr.'}, 'role_type': {'anyOf': [{'enum': ['styreleder', 'styremedlem', 'varamedlem', 'daglig_leder', 'signatur', 'prokura', 'revisor'], 'type': 'string'}, {'type': 'null'}], 'title': 'Role Type', 'default': None, 'description': 'Filter on a single role type. Omit to get all roles.'}, 'include_historic': {'type': 'boolean', 'title': 'Include Historic', 'default': False, 'description': 'Include roles that have ended.'}}}
출력 스키마
{'type': 'object', '$defs': {'CompanyRole': {'type': 'object', 'title': 'CompanyRole', 'required': ['rolle_type', 'navn'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'fra_dato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Fra Dato', 'default': None}, 'til_dato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Til Dato', 'default': None}, 'fodselsaar': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Fodselsaar', 'default': None}, 'rolle_type': {'type': 'string', 'title': 'Rolle Type'}, 'role_person_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Role Person Id', 'default': None, 'description': 'Stable ID â\x80\x94 pass to `get_person_roles` for more.'}, 'signatur_alene': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Signatur Alene', 'default': None}}}}, 'required': ['orgnr', 'roles', 'total_count'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'roles': {'type': 'array', 'items': {'$ref': '#/$defs/CompanyRole'}, 'title': 'Roles'}, 'total_count': {'type': 'integer', 'title': 'Total Count'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit orgnr.'}, 'since': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Since', 'default': None, 'description': 'ISO 8601 date â\x80\x94 lookback cutoff for the announcement-based KYC signals (kyc_signals). Defaults to 730 days back, capped at 1825. State-based sources (distress, interim balance, hiring, funding, IP, ownership churn, â\x80¦) always report their current state and are not affected by this cutoff.'}}}
출력 스키마
{'type': 'object', '$defs': {'KycSignal': {'type': 'object', 'title': 'KycSignal', 'required': ['type'], 'properties': {'type': {'type': 'string', 'title': 'Type'}, 'payload': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Payload', 'default': None}, 'kategori': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kategori', 'default': None}, 'kunngjoring_dato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kunngjoring Dato', 'default': None}}}}, 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'fusjon': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Fusjon', 'default': None, 'description': 'Merger/demerger relations: inbound (companies merged into this orgnr) + outbound (companies this orgnr was merged into), with dates.'}, 'hiring': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Hiring', 'default': None, 'description': 'NAV Arbeidsplassen hiring/growth signal: active_postings, positions_active, postings_30d/90d, burst_score, is_hiring_burst.'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'kyc_signals': {'type': 'array', 'items': {'$ref': '#/$defs/KycSignal'}, 'title': 'Kyc Signals'}, 'frivillighet': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Frivillighet', 'default': None, 'description': 'Authoritative Frivillighetsregister (voluntary-org) membership: registered, registreringsdato, kategorier. Omitted when the source is off.'}, 'generated_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Generated At', 'default': None}, 'distress_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Distress Score', 'default': None}, 'ownership_churn': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Ownership Churn', 'default': None, 'description': 'Ownership-change history (owner churn): changes_total, changes_in_window, window_months, threshold, last_change_date, period_months, is_frequent_owner_change, calibrated. Repeated changes of the controlling owner are a known KYC/AML review trigger. NOTE: calibrated=false means the threshold is provisional â\x80\x94 treat is_frequent_owner_change as a prompt for review, never as a verified finding, and never read a low count as confirmed ownership stability.'}, 'distress_reasons': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Distress Reasons'}, 'distress_category': {'anyOf': [{'enum': ['green', 'yellow', 'red', 'unknown'], 'type': 'string'}, {'type': 'null'}], 'title': 'Distress Category', 'default': None}, 'interim_balance_signal': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Interim Balance Signal', 'default': None}, 'recent_role_changes_count': {'type': 'integer', 'title': 'Recent Role Changes Count', 'default': 0}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit norwegian organization number (typically konsern-toppen).'}}}
출력 스키마
{'type': 'object', '$defs': {'KonsernNode': {'type': 'object', 'title': 'KonsernNode', 'required': ['orgnr', 'navn'], 'properties': {'barn': {'type': 'array', 'items': {}, 'title': 'Barn'}, 'navn': {'type': 'string', 'title': 'Navn'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'selskap_stotte': {'$ref': '#/$defs/SelskapStotte'}, 'antall_underselskaper': {'type': 'integer', 'title': 'Antall Underselskaper', 'default': 0}}}, 'SelskapStotte': {'type': 'object', 'title': 'SelskapStotte', 'properties': {'andre': {'type': 'integer', 'title': 'Andre', 'default': 0}, 'skattefunn': {'type': 'integer', 'title': 'Skattefunn', 'default': 0}, 'total_belop_nok': {'type': 'number', 'title': 'Total Belop Nok', 'default': 0.0}, 'innovasjon_norge': {'type': 'integer', 'title': 'Innovasjon Norge', 'default': 0}, 'antall_prosjekter': {'type': 'integer', 'title': 'Antall Prosjekter', 'default': 0}}, 'description': 'Støtte gitt direkte til *ett* selskap.\n\nSkatteFUNN/Innovasjon Norge gir aldri støtte til konsern, kun til\nindividuelle selskap (#134, 2026-05-27). Aggregeringen pÃ¥ tvers av\nkonsernhierarkiet finner du i :class:`KonsernAggregat`.'}, 'KonsernAggregat': {'type': 'object', 'title': 'KonsernAggregat', 'properties': {'andre': {'type': 'integer', 'title': 'Andre', 'default': 0}, 'skattefunn': {'type': 'integer', 'title': 'Skattefunn', 'default': 0}, 'total_belop_nok': {'type': 'number', 'title': 'Total Belop Nok', 'default': 0.0}, 'antall_selskaper': {'type': 'integer', 'title': 'Antall Selskaper', 'default': 0}, 'innovasjon_norge': {'type': 'integer', 'title': 'Innovasjon Norge', 'default': 0}, 'antall_prosjekter': {'type': 'integer', 'title': 'Antall Prosjekter', 'default': 0}}, 'description': 'Aggregert sum av selskapsstøtte for alle selskap i konsernet.\n\n"Konsernstøtte" er per definisjon en utledet KPI â\x80\x94 ingen kilde gir\nstøtte til et konsern direkte. Aggregatet summerer\n:class:`SelskapStotte` for hvert selskap i hierarkiet.'}}, 'required': ['orgnr', 'navn'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'barn': {'type': 'array', 'items': {'$ref': '#/$defs/KonsernNode'}, 'title': 'Barn'}, 'navn': {'type': 'string', 'title': 'Navn'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'selskap_stotte': {'$ref': '#/$defs/SelskapStotte'}, 'konsern_aggregat': {'$ref': '#/$defs/KonsernAggregat'}, 'antall_underselskaper': {'type': 'integer', 'title': 'Antall Underselskaper', 'default': 0}}}
입력 스키마
{'type': 'object', 'required': ['person_id'], 'properties': {'purpose': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Purpose', 'default': None, 'description': 'Purpose-of-processing string for the F10.11 audit trail. Required when calling against accounts with purpose-confirmation.'}, 'person_id': {'type': 'string', 'title': 'Person Id', 'description': 'Person ID â\x80\x94 either `person-YYYY-[24 hex]` (from `search_persons` shareholders) or `role-[24 hex]` (from `search_persons` role_persons).'}}}
출력 스키마
{'type': 'object', 'required': ['person_id', 'navn'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'person_id': {'type': 'string', 'title': 'Person Id'}, 'birth_year': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Birth Year', 'default': None}, 'active_roles': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Active Roles'}, 'aml_pep_hits': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Aml Pep Hits'}, 'aml_pep_note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Aml Pep Note', 'default': None}, 'shareholdings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Shareholdings'}, 'konkurs_eksponering': {'type': 'object', 'title': 'Konkurs Eksponering', 'additionalProperties': True}}}
입력 스키마
{'type': 'object', 'required': ['person_key'], 'properties': {'person_key': {'type': 'string', 'title': 'Person Key', 'description': 'Shareholder key, format `person-YYYY-[24 hex]`. Obtain from `search_persons` shareholders[] results.'}, 'include_historic': {'type': 'boolean', 'title': 'Include Historic', 'default': False, 'description': 'Reserved for future support; currently only current holdings are returned.'}}}
출력 스키마
{'type': 'object', '$defs': {'Shareholding': {'type': 'object', 'title': 'Shareholding', 'required': ['orgnr', 'navn'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'antall_aksjer': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Antall Aksjer', 'default': None}, 'eierandel_prosent': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Eierandel Prosent', 'default': None}}}}, 'required': ['person_key', 'navn', 'shareholdings', 'total_companies'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'person_key': {'type': 'string', 'title': 'Person Key'}, 'shareholdings': {'type': 'array', 'items': {'$ref': '#/$defs/Shareholding'}, 'title': 'Shareholdings'}, 'total_companies': {'type': 'integer', 'title': 'Total Companies'}}}
입력 스키마
{'type': 'object', 'required': ['role_person_id'], 'properties': {'role_person_id': {'type': 'string', 'title': 'Role Person Id', 'description': 'Stable role-person ID, format `role-[24 hex chars]`. Obtain from `search_persons` role_persons[] results.'}, 'include_historic': {'type': 'boolean', 'title': 'Include Historic', 'default': True}}}
출력 스키마
{'type': 'object', '$defs': {'CompanyRole': {'type': 'object', 'title': 'CompanyRole', 'required': ['orgnr', 'navn', 'rolle_type'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'fra_dato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Fra Dato', 'default': None}, 'til_dato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Til Dato', 'default': None}, 'rolle_type': {'type': 'string', 'title': 'Rolle Type'}}}}, 'required': ['role_person_id', 'navn', 'roles', 'total_roles'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'roles': {'type': 'array', 'items': {'$ref': '#/$defs/CompanyRole'}, 'title': 'Roles'}, 'total_roles': {'type': 'integer', 'title': 'Total Roles'}, 'role_person_id': {'type': 'string', 'title': 'Role Person Id'}}}
입력 스키마
{'type': 'object', 'required': ['entity_type', 'id'], 'properties': {'id': {'type': 'string', 'title': 'Id', 'description': 'Orgnr (9 digits) or person_id depending on entity_type.'}, 'days': {'type': 'integer', 'title': 'Days', 'default': 90, 'maximum': 365, 'minimum': 1}, 'category': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Category', 'default': None, 'description': 'Optional kunngjøring (announcement) category filter. Values are Norwegian: konkurs (bankruptcy), fusjon (merger), eierbytte (change of ownership), ...'}, 'entity_type': {'enum': ['company', 'person'], 'type': 'string', 'title': 'Entity Type', 'description': "'company' = orgnr; 'person' = person_id."}}}
출력 스키마
{'type': 'object', '$defs': {'ChangeItem': {'type': 'object', 'title': 'ChangeItem', 'required': ['dato', 'category'], 'properties': {'dato': {'type': 'string', 'title': 'Dato'}, 'payload': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Payload', 'default': None}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'category': {'type': 'string', 'title': 'Category'}}}}, 'required': ['entity_type', 'id', 'since', 'until', 'count', 'items'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'count': {'type': 'integer', 'title': 'Count'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/ChangeItem'}, 'title': 'Items'}, 'since': {'type': 'string', 'title': 'Since'}, 'until': {'type': 'string', 'title': 'Until'}, 'entity_type': {'type': 'string', 'title': 'Entity Type'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit Norwegian organisation number.'}, 'years': {'type': 'integer', 'title': 'Years', 'default': 5, 'maximum': 5, 'minimum': 1, 'description': 'Number of financial years to include (hard-capped at 5).'}, 'format': {'enum': ['xlsx', 'pdf'], 'type': 'string', 'title': 'Format', 'default': 'pdf', 'description': "'xlsx' for a spreadsheet (3 sheets: figures, key ratios, source) or 'pdf' for a print-ready report. Each format requires its own subscription add-on on the caller's account (Excel export / PDF export respectively) â\x80\x94 a 403 'extension_not_active' error means that add-on isn't enabled."}, 'regnskapstype': {'enum': ['SELSKAP', 'KONSERN'], 'type': 'string', 'title': 'Regnskapstype', 'default': 'SELSKAP', 'description': "'SELSKAP' for the standalone company accounts, 'KONSERN' for the consolidated group accounts (only meaningful for companies that file one)."}}}
출력 스키마
{'type': 'object', 'required': ['orgnr', 'regnskapstype', 'format', 'antall_aar', 'download_url', 'expires_in'], 'properties': {'aar': {'anyOf': [{'type': 'array', 'items': {'type': 'integer'}}, {'type': 'null'}], 'title': 'Aar', 'default': None, 'description': 'The financial years included, newest first.'}, 'kilde': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kilde', 'default': None, 'description': 'Source label shown in the report.'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'format': {'type': 'string', 'title': 'Format'}, 'valuta': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Valuta', 'default': None, 'description': "Reporting currency (ISO 4217, or 'MIXED' if it changed within the series)."}, 'maks_aar': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Maks Aar', 'default': None}, 'antall_aar': {'type': 'integer', 'title': 'Antall Aar', 'description': 'Number of years actually delivered in the report.'}, 'expires_in': {'type': 'integer', 'title': 'Expires In', 'description': 'Seconds until download_url stops working.'}, 'download_url': {'type': 'string', 'title': 'Download Url', 'description': "Short-lived signed URL (~15 min) for the actual file. No further authentication is required to fetch it â\x80\x94 the URL itself is the credential, so treat it as sensitive and don't share it beyond the requester."}, 'regnskapstype': {'type': 'string', 'title': 'Regnskapstype'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit norwegian organization number.'}}}
출력 스키마
{'type': 'object', '$defs': {'RiskComponent': {'type': 'object', 'title': 'RiskComponent', 'required': ['id', 'label', 'points', 'max'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'max': {'type': 'number', 'title': 'Max'}, 'label': {'type': 'string', 'title': 'Label'}, 'points': {'type': 'number', 'title': 'Points'}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}}}}, 'required': ['orgnr', 'score', 'level'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'error': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Error', 'default': None, 'description': 'Backward-compatible decoder field for recorded legacy payloads. The current endpoint returns gates as HTTP 403/404/422/503, so a gate never appears in a successful tool output.'}, 'level': {'type': 'string', 'title': 'Level', 'description': 'Norwegian risk level â\x80\x94 one of: lav (low), moderat (moderate), høy (high), kritisk (critical). Present only in a successful HTTP 200 scoring result.'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'score': {'type': 'number', 'title': 'Score', 'description': 'Risk score on the 0-100 scale (higher = riskier). Present only in a successful HTTP 200 scoring result. Gate responses are HTTP 403/404/422/503 errors and never instantiate this output model.'}, 'sources': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Sources'}, 'data_gaps': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Data Gaps'}, 'components': {'type': 'array', 'items': {'$ref': '#/$defs/RiskComponent'}, 'title': 'Components'}, 'organisasjonsform': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Organisasjonsform', 'default': None, 'description': 'Backward-compatible context from recorded legacy gate payloads; current gate responses are non-2xx errors.'}}}
입력 스키마
{'type': 'object', 'required': ['orgnrs'], 'properties': {'orgnrs': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Orgnrs', 'maxItems': 50, 'minItems': 1, 'description': 'List of 1-50 nine-digit Norwegian organization numbers. Each orgnr counts as one unit against your quota.'}}}
출력 스키마
{'type': 'object', '$defs': {'BulkMeta': {'type': 'object', 'title': 'BulkMeta', 'required': ['total_requested', 'successful', 'failed'], 'properties': {'failed': {'type': 'integer', 'title': 'Failed'}, 'successful': {'type': 'integer', 'title': 'Successful'}, 'total_requested': {'type': 'integer', 'title': 'Total Requested'}}}, 'RiskComponentBrief': {'type': 'object', 'title': 'RiskComponentBrief', 'required': ['id'], 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'max': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Max', 'default': None}, 'label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Label', 'default': None}, 'points': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Points', 'default': None}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}}}, 'BulkRiskScoreResult': {'type': 'object', 'title': 'BulkRiskScoreResult', 'required': ['orgnr'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'error': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Error', 'default': None, 'description': "Error type when scoring could not be completed. Validation: `invalid_orgnr`. Compliance gates: `enk_not_supported` (the organization-form gate â\x80\x94 ENK and NUF) and `kundebekreftelse_required`. The handler gate for a temporarily closed extension requires marketplace_hidden in the extension manifest, and risk scoring has it off â\x80\x94 that code cannot occur here. Organization lookup: `company_not_found` when the source confirms the row does not exist, and `orgform_unavailable` when the form cannot be determined. The defense-in-depth gate may return `blocked_enk`; treat it exactly like `enk_not_supported`. No gate failure carries a score or a risk level. Rollout/configuration (shared extension dispatcher): `extension_not_active`, `extension_controls_unavailable`, `data_provider_failed`, `handler_not_found`, `handler_http_exception`, `handler_failed`, `unexpected_handler_return`. The bulk runner itself: `internal_error` (outside the dispatcher). On a runtime-control failure (rate limit, compliance gate) `error` is NOT one of the codes above â\x80\x94 the field then keeps the control layer's human-readable text, and the machine code lives in `error_code`. The same text is mirrored in `message`."}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Score', 'default': None}, 'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Message', 'default': None, 'description': 'Human-readable detail from the runtime-control layer.'}, 'components': {'type': 'array', 'items': {'$ref': '#/$defs/RiskComponentBrief'}, 'title': 'Components'}, 'error_code': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Error Code', 'default': None, 'description': 'Stable machine code. The risk-scoring handler sets the field ITSELF for its own gates, in addition to the dispatcher setting it for runtime controls. The field therefore covers EXACTLY two layers: the handler gates and the runtime controls â\x80\x94 not all layers. From the handler, with the same value as `error`: `invalid_orgnr`, `enk_not_supported`, `blocked_enk`, `kundebekreftelse_required`, `company_not_found`, `orgform_unavailable`. From the runtime controls, where `error` carries human text instead: `rate_limit_exceeded`, `compliance_gate_revoked`, `compliance_gate_expired`, `compliance_gate_manifest_unavailable`, `compliance_gate_unavailable`. Which gate reasons can occur follows the extension manifest, and risk scoring requires no external authorization â\x80\x94 that gate reason does not exist here. The field does NOT cover the dispatcher and runner errors: a row that fails in the extension dispatcher, or in the bulk runner itself, carries only `error` and has no `error_code` at all. The codes for those two layers are listed under `error` â\x80\x94 always read both fields.'}, 'risk_level': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Risk Level', 'default': None, 'description': 'Norwegian risk level â\x80\x94 one of: lav (low), moderat (moderate), høy (high), kritisk (critical). None on error.'}, 'http_status': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Http Status', 'default': None, 'description': 'HTTP status this per-organization result would have outside bulk.'}, 'retry_after': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Retry After', 'default': None, 'description': 'Retry-After header value when the row was rate limited.'}, 'organisasjonsform': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Organisasjonsform', 'default': None, 'description': 'BRREG organization-form code that triggered a gate, normally ENK or NUF.'}}, 'description': 'Per-organization result in a bulk risk-score response.'}}, 'required': ['_meta'], 'properties': {'_meta': {'$ref': '#/$defs/BulkMeta', 'description': 'Aggregate count status for the whole bulk call.'}, 'results': {'type': 'array', 'items': {'$ref': '#/$defs/BulkRiskScoreResult'}, 'title': 'Results'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None, 'description': 'Human-readable markdown table of the per-company scores.'}}}
입력 스키마
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'title': 'Code', 'description': "NACE code or prefix. Norwegian BRREG uses 5-digit SN2007 codes internally (e.g. '56.110' for restaurants, '47.111' for grocery stores). Any prefix works: '56' matches all serving (2-digit), '56.1' matches restaurants/cafes (3-digit), '56.11' matches restaurant operations (4-digit), '56.110' matches the most specific level (5-digit). If a 4-digit code yields no results, try appending '0' (e.g. '56.110' instead of '56.10')."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 50, 'maximum': 200, 'minimum': 1}, 'cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Cursor', 'default': None}, 'status': {'anyOf': [{'enum': ['aktiv', 'konkurs', 'under_avvikling', 'avregistrert'], 'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}, 'kommune': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kommune', 'default': None, 'description': "Norwegian kommunenummer â\x80\x94 EXACTLY 4 digits, zero-padded. Examples: '0301' = Oslo, '4601' = Bergen, '5001' = Trondheim, '1103' = Stavanger. Kommune-NAMES are NOT accepted â\x80\x94 translate the name to kommunenummer first."}, 'max_ansatte': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Max Ansatte', 'default': None}, 'min_ansatte': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Min Ansatte', 'default': None}, 'stiftet_for': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Stiftet For', 'default': None, 'description': 'ISO 8601 date (YYYY-MM-DD) â\x80\x94 only companies founded on/before this date.'}, 'stiftet_etter': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Stiftet Etter', 'default': None, 'description': "ISO 8601 date (YYYY-MM-DD) â\x80\x94 only companies founded on/after this date. Use for 'newly founded companies in this industry' queries (industry monitoring)."}}}
출력 스키마
{'type': 'object', '$defs': {'NaceCompanyHit': {'type': 'object', 'title': 'NaceCompanyHit', 'required': ['orgnr', 'navn', 'naeringskode'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}, 'kommune': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kommune', 'default': None}, 'naeringskode': {'type': 'string', 'title': 'Naeringskode'}, 'antall_ansatte': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Antall Ansatte', 'default': None}, 'stiftelsesdato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Stiftelsesdato', 'default': None}}}, 'NaceCatalogInfo': {'type': 'object', 'title': 'NaceCatalogInfo', 'required': ['company_count', 'company_count_active', 'company_count_total'], 'properties': {'level': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Level', 'default': None}, 'label_no': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Label No', 'default': None}, 'parent_code': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Parent Code', 'default': None}, 'company_count': {'type': 'integer', 'title': 'Company Count'}, 'company_count_total': {'type': 'integer', 'title': 'Company Count Total'}, 'company_count_active': {'type': 'integer', 'title': 'Company Count Active'}}, 'description': 'Aggregat-counts fra ``nace_code`` (oppdateres nattlig).\n\nDet totale antallet norske selskaper i koden, splittet i aktive (ikke\nkonkurs/avvikling) og total (alle inkl. konkurs/avvikling). Disse er\nrullet opp i NACE-hierarkiet, sÃ¥ ogsÃ¥ foreldre-koder (eks. ``62``,\n``62.1``, ``62.10``) har realistiske counts.\n\n``company_count`` er en legacy-alias for ``company_count_active`` for\nback-compat â\x80\x94 den eldre API-en lagret kun aktive selskaper i denne\nkolonnen.'}}, 'required': ['nace_code', 'items'], 'properties': {'items': {'type': 'array', 'items': {'$ref': '#/$defs/NaceCompanyHit'}, 'title': 'Items'}, 'catalog': {'anyOf': [{'$ref': '#/$defs/NaceCatalogInfo'}, {'type': 'null'}], 'default': None}, 'nace_code': {'type': 'string', 'title': 'Nace Code'}, 'next_cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total Count', 'default': None}}}
입력 스키마
{'type': 'object', 'properties': {}, 'description': 'No parameters â\x80\x94 scoped to the authenticated user via the Bearer token.'}
출력 스키마
{'type': 'object', '$defs': {'SubscriptionRecord': {'type': 'object', 'title': 'SubscriptionRecord', 'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Id', 'default': None}, 'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None}, 'events': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Events'}, 'aktivert': {'type': 'boolean', 'title': 'Aktivert', 'default': False}, 'nace_code': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Nace Code', 'default': None}, 'created_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Created At', 'default': None}, 'updated_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Updated At', 'default': None}, 'min_ansatte': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Min Ansatte', 'default': None}, 'fylke_filter': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Fylke Filter'}, 'kommune_filter': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Kommune Filter'}, 'landsdel_filter': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Landsdel Filter'}, 'aggregation_mode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Aggregation Mode', 'default': None}, 'has_bearer_token': {'type': 'boolean', 'title': 'Has Bearer Token', 'default': False}, 'min_omsetning_nok': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Min Omsetning Nok', 'default': None}, 'aggregation_mode_en': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Aggregation Mode En', 'default': None}}}}, 'required': ['items', 'count'], 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/SubscriptionRecord'}, 'title': 'Items'}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Q', 'default': None, 'description': "Free-text search on the Norwegian industry label (e.g. 'restaurant', 'programvare', 'bygg'). Returns the best-matching NACE codes ranked by relevance."}, 'eu': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Eu', 'default': None, 'description': "An EU NACE Rev. 2 code (e.g. '47.11', '62.01') â\x80\x94 returns the Norwegian 5-digit sub-codes the register actually uses. Use this when you have an EU/international code and need the Norwegian equivalent before subscribing or listing companies."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 50, 'maximum': 200, 'minimum': 1}, 'parent': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Parent', 'default': None, 'description': "Return the direct children of this code to drill down the hierarchy: a section letter ('G'), a 2-digit group ('47'), a 3-digit ('47.1') or 4-digit ('47.11') code. Omit to list the top-level sections (Aâ\x80\x93U)."}}}
출력 스키마
{'type': 'object', '$defs': {'NaceCodeHit': {'type': 'object', 'title': 'NaceCodeHit', 'required': ['code'], 'properties': {'code': {'type': 'string', 'title': 'Code', 'description': "Norwegian NACE code, e.g. '47.110' or section letter 'G'."}, 'level': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Level', 'default': None, 'description': 'Hierarchy level: 1=section, 2=group, 3, 4, 5=most specific.'}, 'label_en': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Label En', 'default': None, 'description': 'English industry label (from SSB Klass), when available.'}, 'label_no': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Label No', 'default': None, 'description': 'Norwegian industry label.'}, 'code_short': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Code Short', 'default': None, 'description': "4-digit BRREG-format variant of the code (e.g. '47.11')."}, 'parent_code': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Parent Code', 'default': None}, 'has_children': {'type': 'boolean', 'title': 'Has Children', 'default': False, 'description': 'True if the code can be drilled into with `parent`=this code.'}, 'company_count': {'type': 'integer', 'title': 'Company Count', 'default': 0, 'description': 'Active companies with this code (legacy alias for company_count_active).'}, 'company_count_total': {'type': 'integer', 'title': 'Company Count Total', 'default': 0}, 'company_count_active': {'type': 'integer', 'title': 'Company Count Active', 'default': 0}}}}, 'required': ['items', 'count'], 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/NaceCodeHit'}, 'title': 'Items'}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Q', 'default': None, 'description': 'Free-text on company name.'}, 'nace': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Nace', 'default': None, 'description': "NACE code or prefix. Norwegian BRREG uses 5-digit SN2007 codes internally (e.g. '56.110'). Any prefix works (2-5 digits). If a 4-digit code yields no results, append '0' for the 5-digit form."}, 'type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Type', 'default': None, 'description': 'Kunngjøring (announcement) type/category. Values are Norwegian: konkurs (bankruptcy), fusjon (merger), fisjon (demerger), eierbytte (change of ownership), ...'}, 'fylke': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Fylke', 'default': None, 'description': "Norwegian fylkenummer â\x80\x94 EXACTLY 2 digits, zero-padded (e.g. '03' = Oslo). NAMES not accepted."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 50, 'maximum': 200, 'minimum': 1}, 'cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Cursor', 'default': None}, 'kommune': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kommune', 'default': None, 'description': "Norwegian kommunenummer â\x80\x94 EXACTLY 4 digits, zero-padded (e.g. '0301' = Oslo). NAMES not accepted."}, 'to_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'To Date', 'default': None, 'description': 'ISO date â\x80\x94 inclusive upper bound.'}, 'from_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'From Date', 'default': None, 'description': 'ISO date â\x80\x94 inclusive lower bound.'}}}
출력 스키마
{'type': 'object', '$defs': {'AnnouncementHit': {'type': 'object', 'title': 'AnnouncementHit', 'required': ['orgnr', 'dato', 'kunngjoring_type', 'category'], 'properties': {'dato': {'type': 'string', 'title': 'Dato'}, 'navn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Navn', 'default': None}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'category': {'type': 'string', 'title': 'Category'}, 'hendelse_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Hendelse Type', 'default': None}, 'payload_summary': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Payload Summary', 'default': None}, 'kunngjoring_type': {'type': 'string', 'title': 'Kunngjoring Type'}}}}, 'required': ['filter', 'items'], 'properties': {'items': {'type': 'array', 'items': {'$ref': '#/$defs/AnnouncementHit'}, 'title': 'Items'}, 'filter': {'type': 'object', 'title': 'Filter', 'additionalProperties': True}, 'next_cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total Count', 'default': None}}}
입력 스키마
{'type': 'object', 'properties': {'q': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Q', 'default': None, 'description': 'Free-text search across company names.'}, 'nace': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Nace', 'default': None, 'description': "NACE code or prefix. Norwegian BRREG uses 5-digit SN2007 codes internally (e.g. '56.110' for restaurants, '47.111' for grocery stores). Any prefix works: '47' matches all retail (2-digit), '47.1' matches food/beverage retail (3-digit), '47.11' matches grocery stores (4-digit), '47.111' is the most specific (5-digit). If a 4-digit code yields no results, try appending '0' for the 5-digit form (e.g. '56.110' instead of '56.10')."}, 'fylke': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Fylke', 'default': None, 'description': "Norwegian fylkenummer â\x80\x94 EXACTLY 2 digits, zero-padded. Examples: '03' = Oslo, '11' = Rogaland, '15' = Møre og Romsdal. Fylke-NAMES are NOT accepted â\x80\x94 translate first."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 25, 'maximum': 100, 'minimum': 1}, 'cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Cursor', 'default': None, 'description': 'Opaque pagination cursor from previous call.'}, 'status': {'anyOf': [{'enum': ['aktiv', 'konkurs', 'under_avvikling', 'avregistrert'], 'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None, 'description': 'Filter on company status.'}, 'kommune': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kommune', 'default': None, 'description': "Norwegian kommunenummer â\x80\x94 EXACTLY 4 digits, zero-padded. Examples: '0301' = Oslo, '4601' = Bergen, '5001' = Trondheim, '1103' = Stavanger. Kommune-NAMES are NOT accepted â\x80\x94 translate the name to kommunenummer first."}, 'max_ansatte': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Max Ansatte', 'default': None}, 'min_ansatte': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Min Ansatte', 'default': None}, 'stiftet_for': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Stiftet For', 'default': None, 'description': 'ISO 8601 date â\x80\x94 only companies founded on/before.'}, 'stiftet_etter': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Stiftet Etter', 'default': None, 'description': 'ISO 8601 date â\x80\x94 only companies founded on/after.'}, 'max_omsetning_nok': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Max Omsetning Nok', 'default': None, 'description': 'Maximum annual revenue (driftsinntekter) in NOK â\x80\x94 same source and same exclusion rule as min_omsetning_nok.'}, 'min_omsetning_nok': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}], 'title': 'Min Omsetning Nok', 'default': None, 'description': "Minimum annual revenue (driftsinntekter) in NOK, from the company's own accounts (not consolidated/group figures), latest year with a reported figure. NOTE: companies with no reported revenue are EXCLUDED from the results when this filter is set, as are accounts reported in a foreign currency. Must be combined with at least one of q/nace/kommune."}}}
출력 스키마
{'type': 'object', '$defs': {'CompanyHit': {'type': 'object', 'title': 'CompanyHit', 'required': ['orgnr', 'navn'], 'properties': {'navn': {'type': 'string', 'title': 'Navn'}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}, 'kommune': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kommune', 'default': None}, 'naeringskode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Naeringskode', 'default': None}, 'antall_ansatte': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Antall Ansatte', 'default': None}, 'stiftelsesdato': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Stiftelsesdato', 'default': None}, 'organisasjonsform': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Organisasjonsform', 'default': None}}}}, 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'$ref': '#/$defs/CompanyHit'}, 'title': 'Items'}, 'next_cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total Count', 'default': None}, 'omsetning_filter_note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Omsetning Filter Note', 'default': None, 'description': 'Set only when a revenue range was requested: explains that companies without a reported NOK revenue figure were excluded, so an empty result may mean missing accounts rather than no matching companies.'}}}
입력 스키마
{'type': 'object', 'required': ['q'], 'properties': {'q': {'type': 'string', 'title': 'Q', 'minLength': 2, 'description': 'Name to search (min 2 characters).'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 30, 'maximum': 100, 'minimum': 1}, 'birth_year': {'anyOf': [{'type': 'integer', 'maximum': 2100, 'minimum': 1900}, {'type': 'null'}], 'title': 'Birth Year', 'default': None, 'description': 'Filter on birth year (helps disambiguate common names).'}, 'kommune_hint': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Kommune Hint', 'default': None, 'description': 'Optional kommune name to help disambiguate matches.'}}}
출력 스키마
{'type': 'object', '$defs': {'RolePersonHit': {'type': 'object', 'title': 'RolePersonHit', 'required': ['role_person_id', 'name'], 'properties': {'name': {'type': 'string', 'title': 'Name'}, 'birth_year': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Birth Year', 'default': None}, 'company_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Company Count', 'default': None}, 'role_person_id': {'type': 'string', 'title': 'Role Person Id', 'description': 'Stable key â\x80\x94 pass to `get_person_roles`.'}, 'active_company_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Active Company Count', 'default': None}}}, 'ShareholderHit': {'type': 'object', 'title': 'ShareholderHit', 'required': ['owner_person_key', 'owner_name'], 'properties': {'poststed': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Poststed', 'default': None}, 'birth_year': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Birth Year', 'default': None}, 'owner_name': {'type': 'string', 'title': 'Owner Name'}, 'country_code': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Country Code', 'default': None}, 'owner_person_key': {'type': 'string', 'title': 'Owner Person Key', 'description': 'Stable key â\x80\x94 pass to `get_person_companies`.'}, 'shareholding_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Shareholding Count', 'default': None}}}}, 'required': ['query', 'shareholders', 'shareholders_count', 'role_persons', 'role_persons_count'], 'properties': {'query': {'type': 'string', 'title': 'Query'}, 'role_persons': {'type': 'array', 'items': {'$ref': '#/$defs/RolePersonHit'}, 'title': 'Role Persons'}, 'shareholders': {'type': 'array', 'items': {'$ref': '#/$defs/ShareholderHit'}, 'title': 'Shareholders'}, 'role_persons_count': {'type': 'integer', 'title': 'Role Persons Count'}, 'shareholders_count': {'type': 'integer', 'title': 'Shareholders Count'}}}
입력 스키마
{'type': 'object', 'required': ['orgnr'], 'properties': {'orgnr': {'type': 'string', 'title': 'Orgnr', 'description': '9-digit norwegian organization number.'}, 'purpose': {'enum': ['kyc_onboarding', 'kyc_review', 'risk_monitoring', 'manual'], 'type': 'string', 'title': 'Purpose', 'default': 'kyc_onboarding', 'description': 'Purpose of the screening â\x80\x94 recorded for audit trail.'}}}
출력 스키마
{'type': 'object', 'required': ['report_id', 'orgnr', 'status'], 'properties': {'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'orgnr': {'type': 'string', 'title': 'Orgnr'}, 'status': {'type': 'string', 'title': 'Status', 'description': "One of: pending, running, done, failed (starts at 'pending')."}, 'report_id': {'type': 'string', 'title': 'Report Id', 'description': "Job/report id â\x80\x94 poll with `get_aml_report` until status is 'done' or 'failed'."}}}
입력 스키마
{'type': 'object', 'required': ['nace_code'], 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None, 'description': 'HTTPS webhook URL that receives a POST for each matched event. Omit only if you intend to add it later via the portal.'}, 'events': {'type': 'array', 'items': {'enum': ['created', 'updated', 'deleted', 'status_changed'], 'type': 'string'}, 'title': 'Events', 'description': "Which event types to deliver. Omit for all of them. Restrict to e.g. ['status_changed'] to receive only bankruptcy/dissolution signals and cut volume dramatically in large industries."}, 'aktivert': {'type': 'boolean', 'title': 'Aktivert', 'default': True, 'description': 'Whether the subscription is active immediately (default true).'}, 'nace_code': {'type': 'string', 'title': 'Nace Code', 'description': "The NACE code to monitor. Accepts a section letter ('G'), a group ('47'), or a more specific code ('47.110'). Resolve the exact code first with list_nace_codes if unsure. A subscription on a parent code also matches events in all child codes."}, 'min_ansatte': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'title': 'Min Ansatte', 'default': None, 'description': 'Optional size filter: only companies with at least this many employees.'}, 'bearer_token': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Bearer Token', 'default': None, 'description': 'Optional bearer token Firmaradar sends as `Authorization: Bearer <token>` when calling your webhook URL, so your endpoint can authenticate the delivery. Stored encrypted.'}, 'fylke_filter': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Fylke Filter', 'default': None, 'description': 'Optional geographic filter: only companies in these fylker (county numbers).'}, 'kommune_filter': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Kommune Filter', 'default': None, 'description': 'Optional geographic filter: only companies in these kommuner (4-digit kommunenummer).'}, 'landsdel_filter': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Landsdel Filter', 'default': None, 'description': 'Optional geographic filter: only companies in these landsdeler.'}, 'aggregation_mode': {'enum': ['real_time', 'hourly_digest', 'daily_digest'], 'type': 'string', 'title': 'Aggregation Mode', 'default': 'real_time', 'description': "Delivery cadence. 'real_time' (default) posts each event immediately. 'hourly_digest' / 'daily_digest' batch events to reduce noise in high-volume industries."}, 'min_omsetning_nok': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'title': 'Min Omsetning Nok', 'default': None, 'description': 'Optional size filter: only companies with at least this much revenue (NOK).'}}}
출력 스키마
{'type': 'object', 'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Id', 'default': None, 'description': 'ID of the created/updated subscription.'}, 'raw': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Raw', 'default': None}, 'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None}, 'events': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Events'}, 'aktivert': {'type': 'boolean', 'title': 'Aktivert', 'default': False}, 'nace_code': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Nace Code', 'default': None}, 'created_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Created At', 'default': None}, 'updated_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Updated At', 'default': None}, 'aggregation_mode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Aggregation Mode', 'default': None}, 'aggregation_mode_en': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Aggregation Mode En', 'default': None}}}
최근 도구 변경
유사한 MCP 서버
UK Due Diligence
Searches UK company, charity, insolvency, land transaction, sanctions, and director-disqualification records for due diligence.
ENTIA Entity Verification
Verifies businesses and professionals using entity, VAT, registry, competitor, risk-audit, and socioeconomic data for KYB and due…
TempGuru Event Staffing
Plans W-2 event staffing using role pricing, rate benchmarks, lead-time guidance, market data, and state employment compliance in…
empresas
Searches Argentine companies, executives, importers, tenders, and regulatory records, with detailed company and person profiles b…
cuisor.ro
Searches and analyzes Romanian companies using registry identity, financial filings, tax status, procurement awards, legal repres…
nordic-data
Provides European company, KYB, VAT, LEI, sanctions, PEP, adverse-media, address, and industry-statistics data across 15 countrie…
Radicado Uno
Provides Colombian company due-diligence, registry, sanctions, procurement, competitor, financial-signal, and source-linked repor…
SupplyGraph.AI
Analyzes supplier and enterprise supply-chain risks, due diligence, geographic concentration, visual dependencies, tariffs, custo…