关于 Apier
Apier 是面向 Agent 的挪威企业数据与合规 MCP 服务,可查询登记信息、签字权限、年报和申报期限。它也支持通过 Altinn 3 委托并核验企业授权。
主要功能
- 01查询企业资料与状态
- 02查看签字权和代理权
- 03获取年报及申报期限
- 04评估监管义务与合规
- 05申请、核验和撤销授权
适用场景
- 01核实挪威企业登记状态
- 02确认企业签署权限
- 03规划税务及年报申报
- 04检查 Agent 代表企业的授权
MCP 相关
托管 MCP 服务向客户端提供挪威企业数据、合规查询及授权管理工具。可直接连接 HTTP 端点,也可通过 @apier-no/mcp 代理连接本地 stdio 客户端。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://www.apier.no/api/mcpclaude mcp add --transport http no-apier https://www.apier.no/api/mcp{"mcpServers":{"no-apier":{"type":"http","url":"https://www.apier.no/api/mcp"}}}在 Cursor 中打开{"servers":{"no-apier":{"type":"http","url":"https://www.apier.no/api/mcp"}}}在 VS Code 中打开{"mcpServers":{"no-apier":{"type":"http","url":"https://www.apier.no/api/mcp"}}}{"mcpServers":{"no-apier":{"serverUrl":"https://www.apier.no/api/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://www.apier.no/api/mcp需要授权工具
25| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| org_number | string | 是 | 9 位挪威组织编号(Brønnøysund ID);会预先进行 MOD-11 校验——校验失败的值会被拒绝并返回 VALIDATION_FAILED,因此请更正编号,而不是重试。 |
详细介绍
Apier MCP 服务 — 面向 AI Agent 的挪威公司数据与合规服务
Apier 是一项托管式 MCP(Model Context Protocol)服务,可让 AI Agent 以结构化方式访问挪威公司数据和监管合规信息。它会根据任意 9 位 organisasjonsnummer(组织编号),查询 Brønnøysundregistrene(Brønnøysund 登记中心/Enhetsregisteret);查询公司的 签字权限(signaturrett 和 prokura);读取 Regnskapsregisteret 中的 年度账目(årsregnskap);计算 MVA、A-melding 和 Årsregnskap 的 申报截止日期;并通过 Altinn 3 systembruker 代办 fullmakt(限定范围、可撤销的公司→Agent 授权),再通过 Maskinporten 对 Skatteetaten 等机构进行上游身份验证。本仓库是精简且经过加固的 npm 代理(@apier-no/mcp),用于将本地 stdio MCP 客户端连接到托管服务。
可以询问什么
连接此服务后,AI Agent 可以回答以下问题:
- “Equinor 的 organisasjonsnummer 是多少?” (search_companies)
- “谁有权代表组织编号 923 609 016 签署法律文件——这是 signaturrett 还是 prokura?” (get_company_authority)
- “这家公司是否注册了增值税?它有哪些监管义务?” (get_company_summary)
- “这家公司未来六个月有哪些申报截止日期?” (get_company_deadlines)
- “请显示这家公司最新的年度账目(årsregnskap)。” (get_company_accounts)
- “旧版 Altinn 2 角色代码在 Altinn 3 中对应什么?” (get_altinn_migration_guidance)
- “Norges Bank 当前的欧元兑挪威克朗汇率是多少?” (get_exchange_rate)
- “请求一份 fullmakt,以便我代表这家公司行事,然后在申报前验证它。” (request_fullmakt, check_fullmakt)
工具
托管服务 https://www.apier.no/api/mcp 提供的全部 25 个工具(通过 2026-10-10 的实时 tools/list 发现;每行是实时描述的首句,因此只需调用一次 tools/list 即可获取完整文本):
| 工具 | 描述 |
|---|---|
get_company_summary | 一次性汇总挪威组织的义务和截止日期:了解一家公司时的首选调用。 |
get_public_obligations | 无需密钥。获取挪威实体类型的通用义务集——仅依据组织形式就适用的所有监管义务,不包括之后叠加的单家公司 Tier-2 数据。 |
get_exchange_rate | 无需密钥。Norges Bank 提供的货币兑 NOK 参考汇率——挪威税务和会计规则认可的外币义务基准汇率。 |
list_acting_capacity | 确定某人目前获授权代表特定组织执行的所有挪威监管操作。 |
get_company_profile | 将挪威 organisasjonsnummer(9 位数字)解析为来自 Brønnøysund Enhetsregisteret 的结构化公司资料:显示名称、组织形式、带说明的 NACE 代码、地址、注册和解散日期、active / dissolved 状态枚举、MVA 注册标记,以及人员的角色代码——绝不包含个人标识符。 |
check_authorization | 返回调用方使用者在挪威组织上的委托授权快照:status 枚举(full / partial / none)、active_scopes、missing_scopes(full 时为空)和 delegated_rights。 |
get_company_context | 挪威组织的 Brønnøysund 身份信息:法定名称、组织形式、NACE 代码、地址、成立或解散日期,以及 signaturrett / prokura 角色代码摘要(绝不包含个人标识符)。 |
get_company_deadlines | 某个组织未来 horizon_months 个月内的申报日历。 |
get_company_obligations | 对挪威组织评估 Apier Rulebook:每条规则对应一项,包含 rule_id、obligation_name、evaluation_result(applicable、not_applicable 或 insufficient_data)、原因、legal_reference、frequency、data_tier_required 和 bokmål 描述;该描述按字节原样继承(绝不重新翻译)。 |
get_public_deadlines | 无需密钥。挪威通用申报日历:所有挪威企业在所涵盖类别(MVA、A-melding、Skattemelding、Årsregnskap)中的截止日期,不因任何单个组织而异。 |
validate_action | 对拟议的监管操作进行试运行,不产生任何上游副作用(不调用政府服务)。 |
explain_compliance_error | 无需密钥。将结构化 Apier 合规错误代码解析为挪威书面语(bokmål)说明封装:摘要、bokmål 原因、按顺序排列的 fix_steps、可选的文档链接和 legal_basis,以及可选的交接块(who / where / what / why),用于必须由人工解决的错误。 |
search_companies | 将挪威公司名称解析为其 9 位 organisasjonsnummer。 |
get_company_verification | 在代表挪威组织采取行动前,快速进行可信度判断。 |
get_company_authority | 谁能合法代表这家挪威公司签字,以及如何签字? |
get_company_accounts | 来自 OPEN Regnskapsregisteret 层的挪威公司年度账目(årsregnskap)当前快照:has_filed_annual_accounts(null = 未知,绝不伪造为 false)、last_accounts_year,以及该年度的最简 key_figures(始终显示货币、列报基础和合计数)。 |
get_company_filing_history | 将公司的 Altinn 3 申报历史与 YOUR 使用者通过 Apier 提交的申报进行核对:每个 Altinn 实例都与其 Apier 审计记录配对(filed_via_apier + apier_record)。 |
list_changes | 读取 Apier 的跨数据源变更归档——检测 Apier 轮询的上游数据源(Brønnøysund、Altinn schemas、Norges Bank、NAV、Skatteetaten Tier-2)中的 created / updated / deleted 事件;Digdir 轮询器已停用,因此 digdir 是有效但为空的筛选条件。 |
get_altinn_migration_guidance | 查找 Altinn 2 服务或角色代码对应的 Altinn 3 等效项。 |
request_fullmakt | 通过 Altinn systembruker 代办 fullmakt——范围受限、可撤销的公司→Agent 授权。 |
check_fullmakt | 代表挪威公司采取行动之前,检查你的 fullmakt 状态。 |
revoke_fullmakt | 撤销 fullmakt——收回授予 Agent 的挪威公司权限,并停用该 Agent 主体。 |
get_pricing | 在进行按次计费的工作之前调用,以查看每次调用的费用以及计费执行是否已启用。 |
get_credit_balance | 在进行一批按次计费的调用之前调用,以确认调用密钥的预付额度足以支付费用;在出现 402 INSUFFICIENT_CREDITS 并由人工充值后调用,以确认资金已到账。 |
redeem_issuance_token | 将所有者签发的密钥签发令牌转换为你自己的 API 密钥——供尚无凭据的 Agent 使用的无头入门步骤。 |
无需密钥即可试用
启动此代理需要 APIER_API_KEY(参见快速入门)。代理会将你提供的任何 bearer 值原样转发为 Authorization: Bearer …,且绝不会检查密钥的格式。即使没有真实密钥,你仍有两种沙盒方式可用,两者均由合成测试数据提供,不会访问任何政府登记库:
- 直接通过 HTTP 访问沙盒镜像:在 apier.no 上的
/api/v1/sandbox/下。每个 Category B 公司端点都在此处提供镜像。这并非零认证:它需要一个自行编造的沙盒 bearer 值,格式为apier_sandbox_test_<suffix>(后缀为 1–64 个A-Za-z0-9_-字符中的任意组合);服务器会根据前缀识别该值,并返回测试数据——无需注册,也没有密钥存储。另有一个真正零认证的镜像,位于/api/v1/sandbox/public/下,仅提供测试组织999999999。 - 在托管 MCP 端点上使用同一个沙盒 bearer 值:
https://www.apier.no/api/mcp。发送Authorization: Bearer apier_sandbox_test_<suffix>后,基于测试数据的公司工具(get_company_context、get_company_obligations、get_company_deadlines、get_company_summary、get_company_verification、explain_compliance_error、get_company_authority、get_company_accounts、get_company_filing_history)会被路由到沙盒镜像,且每个结果都带有_meta.is_sandbox: true;其余工具的响应与无密钥时完全相同。由于此代理会原样转发 bearer 值,将APIER_API_KEY设为此类值后,stdio 客户端也可以使用测试数据演练这些工具。
列出规范的沙盒测试数据(完全无需认证):
curl -sL https://apier.no/api/v1/sandbox/fixtures
精简后的响应——… 表示省略的字段:
{"success":true,"data":{"schema_version":"1.0.0",
"reserved_test_orgs":[{"org_number":"999000001","name":"Sandbox AS","entity_type":"AS","data_tier":"tier_1", …}],
"realistic_orgs":[{"org_number":"818000006","name":"Fjellberg Regnskap AS","entity_type":"AS","data_tier":"tier_1_2"}, …],
"magic_scenarios":[{"org_number":"999660010","state":"konkurs","label":"Bankrupt (konkurs)"}, …], …}}
使用自行编造的 bearer 值验证破产测试公司——在 apier_sandbox_test_ 后添加任意 1–64 个 A-Za-z0-9_- 字符即可;此处使用 bash 的 $RANDOM 生成后缀。(此调用直接访问 www 主机:从 apex 到 www 的 308 重定向会导致 curl 丢弃 Authorization 标头。)
curl -s -H "Authorization: Bearer apier_sandbox_test_$RANDOM" https://www.apier.no/api/v1/sandbox/company/999660010/verify
精简后的响应——… 表示省略的字段:
{"success":true,"data":{"org_number":"999660010","name":"Sandbox Konkurs AS",
"verification_status":"fail",
"signals":{"is_active":false,"not_bankrupt":false, …},
"summary":"Selskapet er ikke aktivt registrert i Enhetsregisteret.", …}}
不要混淆这两个前缀:真实 API 密钥格式为 apr_<tier>_…(apr_free_、apr_starter_、apr_pro_ 或 apr_ent_),需通过 https://www.apier.no/docs/authentication 注册获取;而 apier_sandbox_test_ 可自行生成,无需注册。(较早版本的 README 曾提及 apier_live_ / apier_test_ 密钥;从未签发过这类格式的密钥。)GET /api/v1/sandbox/fixtures 是沙盒测试数据的规范机器可读表。
快速入门
托管端点(可流式传输的 HTTP)
最快的方式——无需安装。将任何支持可流式传输 HTTP 的 MCP 客户端指向:
https://www.apier.no/api/mcp
发现功能无需密钥:无需凭据即可使用 initialize、tools/list、资源和提示词,因此 Agent 可以先浏览完整目录,再进行身份验证。只有调用受保护的工具时才需要 API 密钥(Authorization: Bearer apr_<tier>_…)。请参阅 https://www.apier.no/docs/authentication 了解如何获取密钥,然后在 https://www.apier.no/dashboard 中创建密钥。
npx stdio 代理(@apier-no/mcp)
对于仅支持 stdio 的客户端,此软件包封装了 mcp-remote,从环境中读取 APIER_API_KEY,将其从启动的子进程环境中移除,在 stderr 中对其进行脱敏,并通过带外方式传递 bearer 值,使其绝不会出现在子进程的命令行中——详见 SECURITY.md。
mcp-remote 已从 geelen/mcp-remote 迁移至 punkpeye/mcp-remote;npm 软件包名称不变,且 0.8.1 版本已发布,并附有 SLSA 来源证明。
**以 @apier-no/mcp 发布。**由于 @apier 作用域不可用,此软件包使用 @apier-no 作用域发布。
Claude Desktop / Cursor(claude_desktop_config.json / ~/.cursor/mcp.json):
{
"mcpServers": {
"apier": {
"command": "npx",
"args": ["-y", "@apier-no/mcp"],
"env": { "APIER_API_KEY": "apr_<tier>_<your_key_here>" }
}
}
}
VS Code(.vscode/mcp.json):
{
"servers": {
"apier": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@apier-no/mcp"],
"env": { "APIER_API_KEY": "apr_<tier>_<your_key_here>" }
}
}
}
Zed(settings.json):
{
"context_servers": {
"apier": {
"source": "custom",
"command": "npx",
"args": ["-y", "@apier-no/mcp"],
"env": { "APIER_API_KEY": "apr_<tier>_<your_key_here>" }
}
}
}
每个客户端的即贴即用配置文件位于 examples/。
配置
| 变量 | 必填 | 默认值 |
|---|---|---|
APIER_API_KEY | 是 | — |
--endpoint <url> | 否 | https://www.apier.no/api/mcp |
MCP_REMOTE_CONFIG_DIR | 否 | ~/.mcp-auth |
安全
APIER_API_KEY由父进程读取,并会从已启动的子进程环境中清除;stderr 会经过脱敏处理,去除Bearer …、裸露的apr_<tier>_…密钥和apr_issue_…密钥签发令牌、旧版apier_(live|test)_…格式、ghp_…以及Authorization:子字符串。- 密钥绝不会出现在子进程的命令行中。
--header参数仅携带占位符Authorization:${APIER_MCP_AUTH_HEADER};Bearer 值通过该变量在带外传递,并由mcp-remote在请求时展开。在 Linux 上,命令行可被所有用户读取(/proc/<pid>/cmdline),但进程环境不可读取,因此其他本地用户现在无法读取该值(#33,已在 1.2.0 中修复)。已以你的身份运行的攻击者仍可读取环境变量,详见 SECURITY.md。 - 启动进程前会拒绝非 https 端点;
mcp-remote使用精确版本固定,且发布版本通过 GitHub Actions Trusted Publishing(OIDC)使用 npm provenance 发布。 - 应像对待
.env文件一样对待客户端配置文件(claude_desktop_config.json、.cursor/mcp.json等),切勿将包含真实密钥的文件提交到版本库。
完整威胁模型和披露政策:SECURITY.md。
文档
- MCP 服务文档:https://www.apier.no/docs/mcp
- Apier 平台文档:https://apier.no/docs
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。