mcpField
E
EMPORION — business facts from public registers

EMPORION — business facts from public registers

远程服务
modelmarket.dev商业与营销01 天前更新

关于 EMPORION — business facts from public registers

EMPORION 是面向贸易和企业核查 Agent 的公共记录 MCP 服务。它在 VAT、企业、制裁名单、汇率等查询结果中附带来源、获取时间和 SHA-256 证据。

主要功能

  1. 01核验欧盟 VAT 和 EORI 编号
  2. 02查询企业和 LEI 信息
  3. 03按制裁名单筛查姓名及钱包
  4. 04查询历史 ECB 汇率
  5. 05捕获网页并生成时间戳证据
  6. 06设置签名计时器和回调

适用场景

  1. 01核验企业的 VAT 或 EORI 信息
  2. 02交易前查看企业登记信息
  3. 03按公开名单筛查姓名或钱包
  4. 04保存网页作为可验证证据

MCP 相关

它通过能力 API 向 Agent 提供公共记录查询、筛查、证据捕获和计时器功能。请求经过签名;通过 Hub 调用时会计费并生成收据。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://modelmarket.dev/tools/mcp/emporion
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

🔄 从单体仓库同步而来,并保留完整历史。 emporion 镜像了规范的 AI-Factory 单体仓库。此处的历史仅追加(不会强制推送)。 欢迎提交拉取请求——已合并的 PR 会被导入单体仓库,并重新同步到此处,因此你的贡献将成为规范版本。 💬 欢迎提交 问题 · 拉取请求。

EMPORION — 为交易 Agent 提供公共记录事实

持续集成 Pages 部署 在线服务 介绍页 GHCR 软件包 Python >=3.11 测试 AIMarket v2 Ed25519 + ML-DSA 签名 文档提供 5 种语言版本 测试覆盖率 许可证:MIT

🌐 英语 · 俄语 · 西班牙语 · 法语 · 中文

买卖或付款的 Agent 需要模型无法编造的事实:这个 VAT 号码有效吗?这家公司是谁?那天的欧元汇率是多少?这个钱包是否列在制裁名单上?我能否证明这份文件昨天就已存在?EMPORION 从公共记录中逐一回答这些问题——数据来源包括欧盟委员会、GLEIF、欧洲央行、美国财政部、欧盟、英国和 Bitcoin——并为每个答案签名,同时注明答案的来源、时间,以及来源返回内容的 SHA-256 哈希值。

Emporion(ἐμπόριον):希腊城市的贸易站,商人在此相聚并进行结算。

自 0.2.0 起,它还能回答接下来的问题:这家公司是否在本国登记册中?它的 EORI 号码是否适用于海关?这家商店所用域名已有多少年历史?在巴伐利亚州或 TARGET2 中,第五个工作日是哪天?此外,它还为 Agent 提供两种模型无法提供的工具:作为证据捕获的网页(锚定在 Bitcoin 上),以及一个计时器,其中包括死信开关;它会通过带签名的事件回调 Agent。

能力

能力价格可解答的问题来源
emporion.vat.check@v1$0.002这个欧盟 VAT 号码今天有效吗?名称、地址、查询时间;如果你将自己的 VAT 号码作为请求方,还会返回 VIES 的查询编号:以你的名义进行查询的官方证明EU VIES
emporion.lei.lookup@v1$0.001这个法律实体是谁?可按 LEI 查询(在本地验证校验位),也可按名称查询(候选结果按相关性排序):法定名称、司法管辖区、法律形式、状态、地址、续期信息、直接和最终母公司GLEIF (CC0)
emporion.fx.rate@v1$0.001自 1999 年以来任意日期的任意货币对欧元参考汇率、对应的欧洲央行日期、以 Decimal 表示的欧元交叉汇率,以及按货币最小单位舍入的金额ECB
emporion.sanctions.screen@v1$0.002这个钱包地址或名称是否出现在公开制裁名单中?OFAC SDN(含约 1,050 个数字货币地址)、欧盟和英国名单(其中包含联合国指定对象,每个命中项均带有联合国编号),并提供每份名单的日期和 SHA-256OFAC · EU · UK
emporion.timestamp.stamp@v1$0.001通过 OpenTimestamps 日历将 SHA-256 摘要锚定到 Bitcoin;返回标准 .ots 证明OpenTimestamps
emporion.timestamp.verify@v1$0.001升级并验证证明:当结果等于 EMPORION 从 Bitcoin 网络本身获取的 Bitcoin 区块头 Merkle 根时,即确认成功(检查每个区块头的工作量证明,并由两个节点确认链)Bitcoin
emporion.web.capture@v1$0.003网页证据:最终 URL、所有重定向、IP、状态、关键标头、TLS 证书和正文的 SHA-256(以及正文,最多 512 KB);记录的 SHA-256 已锚定到 Bitcoin网页本身 · OpenTimestamps
emporion.domain.rdap@v1$0.001谁在何时注册了这个域名:创建时间、到期时间、天数、注册商、状态、名称服务器、DNSSEC;或 registered: falseIANA 引导信息 → TLD 注册局
emporion.company.lookup@v1$0.001这家公司是否真实且仍在运营?可按编号或名称查询:名称、状态、法律形式、成立日期、地址、VAT 号码,以及登记处自身的字段Brønnøysund (NO) · SIRENE/RNE (FR) · ARES (CZ) · PRH (FI) · Companies House (GB,需使用运营方的密钥)
emporion.eori.check@v1$0.002这个 EORI 号码是否有效,可用于欧盟海关?每次最多查询 10 个;运营方同意公开时会返回名称和地址European Commission (EOS)
emporion.calendar.check@v1$0.001约 250 个国家(和地区)或某个市场(TARGET2、NYSE、LSE…)的工作日信息:节假日、下一个/上一个工作日、日期加 N 个工作日、两日期间的天数、一整年的节假日python-holidays(离线)
emporion.timer.set@v1$0.002在指定时间向你的 HTTPS 回调发送签名 POST,或设置一个定时触发的死手开关,除非你每隔 N 秒签到—
emporion.timer.checkin@v1 · .cancel@v1 · .status@v1免费维持死手开关运行、取消计时器、读取其状态(需提供计时器令牌)—
emporion.sources@v1免费每个来源的许可证和署名信息、当前持有的制裁名单、欧洲央行的最新日期—
flowchart LR
    A[Agent] -->|invoke + payment| H[AIMarket hub]
    H -->|X-Provider-Signature required| E[EMPORION]
    E --> N{allowlist<br/>per source}
    N --> V[VIES]
    N --> G[GLEIF]
    N --> C[ECB]
    N --> S[OFAC · EU · UK lists<br/>refreshed every 6 h]
    N --> O[OpenTimestamps calendars]
    E --> X[Bitcoin P2P network<br/>headers · proof of work checked]
    E -->|answer + evidence:<br/>url · fetched_at · sha256| H
    H -->|signed receipt| A

简要说明信任保障

  • 每个答案都有证据——来源 URL、抓取时间、返回字节的 SHA-256,以及来源的许可证和署名信息。
  • 两种签名——网关的签名回执(oracle-core、Ed25519;当 ORACLE_PQC=1 时使用混合 ML-DSA),以及 Hub 验证的、绑定请求的 X-Provider-Signature。
  • 无法给出答案的来源不收费——答案为 ok:false,Hub 不会因 ok:false 扣费:成员国的 VAT 登记系统宕机、制裁名单未加载或已超过 48 h、时间戳日历少于两个,或区块头链尚未延伸到目标区块。
  • 每个来源的出站请求都使用允许列表;重定向由系统手动跟进,且只能跳转到该来源自己的主机;响应正文大小设有限制。
  • 两个可访问调用方指定 URL 的功能(网页捕获和计时器回调)仅访问公共地址:仅允许端口为 80/443 的 http(s) 请求;检查名称对应的每个地址(不允许环回、私有、链路本地、CGNAT 或元数据范围地址);连接固定到已检查的地址;再次检查每次重定向;每分钟对同一主机最多捕获 20 次。

示例

H=https://emporion.modelmarket.dev
inv() { curl -s -X POST $H/ai-market/v2/invoke -H 'Content-Type: application/json' -d "$1"; }

inv '{"capability_id":"emporion.vat.check@v1","input":{"vat":"NL004495445B01","requester_vat":"DE811569869"}}'
inv '{"capability_id":"emporion.lei.lookup@v1","input":{"name":"Deutsche Bank"}}'
inv '{"capability_id":"emporion.fx.rate@v1","input":{"base":"USD","quote":"JPY","date":"2026-10-11","amount":"100"}}'
inv '{"capability_id":"emporion.sanctions.screen@v1","input":{"address":"0x…"}}'
inv '{"capability_id":"emporion.timestamp.stamp@v1","input":{"digest":"'"$(sha256sum contract.pdf | cut -d' ' -f1)"'"}}'
inv '{"capability_id":"emporion.web.capture@v1","input":{"url":"https://shop.example/terms"}}'
inv '{"capability_id":"emporion.domain.rdap@v1","input":{"domain":"shop.example"}}'
inv '{"capability_id":"emporion.company.lookup@v1","input":{"country":"FR","number":"552032534"}}'
inv '{"capability_id":"emporion.eori.check@v1","input":{"eori":"CZ00177041"}}'
inv '{"capability_id":"emporion.calendar.check@v1","input":{"market":"XECB","add_business_days":5}}'
inv '{"capability_id":"emporion.timer.set@v1","input":{"callback":"https://agent.example/hook","deadman_seconds":3600,"payload":{"release":"escrow-7"}}}'

通过 Hub 调用时,同样的调用需要付费并生成回执:POST https://modelmarket.dev/ai-market/v2/invoke,其中 "product_id":"emporion"。

VAT:查询编号

VIES 仅向作为请求方提供的有效 EU VAT 编号签发查询编号。该编号是请求方保留的凭证:将你自己的编号作为 requester_vat 传入,答案中的查询编号便是以你的名义生成的证据,表明你在 checked_at 查询了交易对方。即使不提供该编号,系统仍会执行检查;答案会说明如何获取该编号。

FX:日期选择

某日期的汇率,是 ECB 在该日期当天或之前发布的最新汇率;答案会注明对应日期(ecb_date):周日会采用周五的汇率,并明确显示这一点。对于 ECB 已停止报价的货币(RUB 自 2022 年 3 月起),系统会拒绝回答,而不会提供多年前的汇率。

制裁:查询,不是认定

钱包地址采用精确匹配(EVM 和 bech32 地址不区分大小写)。姓名按词语集合匹配——忽略顺序、大小写、重音符号和法律形式(“DOE, John” 与 “John Doe” 相同);存在拼写错误的词计为 0.9 分,且绝不会视为同一姓名;即使较长姓名中包含了所有查询词(例如父名、中间名),仍会匹配。默认阈值为 0.85;每条命中结果都会说明匹配的姓名和分数。

命中表示需要进一步核查;未命中不代表已排除风险。 姓名可能重名,别名也可能不完整。每个答案都会说明这一点,并列出所用名单的名称、发布日期和 SHA-256。名单过期时会拒绝查询,而不会使用过期名单。

联合国指定名单通过英国和 EU 名单获取。 联合国安理会自己的文件不包含再利用许可,因此 EMPORION 不会读取该文件。英国《制裁名单》(Open Government Licence v3.0)会为英国执行的每项联合国指定提供其联合国参考编号,EU 文件也会为部分指定提供该编号:命中结果包含 un_ref,而 lists: ["UN"] 仅筛查 UK 和 EU 名单中带有该编号的条目。截至 2026-10-17,三份名单合计包含全部 1010 条联合国记录(其中 991 条在 UK 名单中按联合国编号列出,其余则按姓名列于 EU 和 OFAC 名单中)。最新的联合国决定会在 UK 和 EU 完成执行后才出现在这些名单中,通常会延迟数天。

时间戳
sequenceDiagram
    autonumber
    participant A as Agent
    participant E as EMPORION
    participant C as OpenTimestamps calendars
    participant B as Bitcoin nodes (P2P, ×2)
    A->>E: stamp {digest}
    E->>E: sha256(digest ‖ 16 random bytes) — calendars never see the digest
    E->>C: submit to all four, at least two must accept
    C-->>E: pending attestations
    E-->>A: .ots proof (pending)
    Note over C: a few hours later the calendars' aggregate<br/>transaction is mined in a Bitcoin block
    A->>E: verify {digest, proof}
    E->>C: upgrade at each calendar the proof names (allowlisted only)
    C-->>E: path to the block
    E->>B: getheaders — the whole chain, kept and refreshed
    B-->>E: every header's proof of work and difficulty checked, a second node agrees
    E->>E: proof result == header Merkle root
    E-->>A: confirmed · existed no later than the block time · upgraded proof

该证明采用标准 OpenTimestamps 文件格式:无需 EMPORION,使用任何 OpenTimestamps 客户端即可验证。参考示例(hello-world.txt)可验证到区块 358 391,时间为 2015-05-28。

网页抓取:页面内容

EMPORION 像浏览器一样抓取一次页面,并返回一条 record:请求的 URL、最终 URL、每次重定向及其状态和 IP、时间、状态、说明页面信息的标头(内容类型、长度、Last-Modified、ETag、Date、Server……)、服务提供的 TLS 证书(主题、颁发者、有效期、名称、证书的 SHA-256)、页面标题和 body_sha256。当正文不超过 512 KB 时,正文会以 body_b64 返回(页面上限为 5 MB)。record_sha256 是对采用排序键和紧凑分隔符的 JSON 格式记录计算出的 SHA-256,并通过 OpenTimestamps 锚定在 Bitcoin 上——稍后可使用 emporion.timestamp.verify@v1 验证。404 也算一次抓取(这就是页面返回的内容);无法连接的主机或验证失败的证书不收费。

定时器与死者开关
sequenceDiagram
    autonumber
    participant A as Agent
    participant E as EMPORION
    participant C as Agent callback (https)
    A->>E: timer.set {callback, deadman_seconds: 3600, payload}
    E-->>A: timer_id + token (once)
    loop while the agent is alive
        A->>E: timer.checkin {timer_id, token}
        E-->>A: due_at moved 3600 s ahead
    end
    Note over A: the agent stops
    E->>C: POST {event, signature} — Ed25519 (+ ML-DSA) over the event
    C-->>E: 2xx (else retried after 1, 5, 30 min)

at(带时区的 ISO 时间)或 after_seconds 可设置一次性调用。事件包含定时器 ID、类型、到期时间和触发时间、尝试次数以及你的负载(最多 4 KB);签名由 EMPORION 在其签名清单中的密钥生成,签名对象是采用排序键和紧凑分隔符的 JSON 格式事件。令牌只以其 SHA-256 形式保存。定时器最长可运行 90 天,存储在 EMPORION 数据卷中的一个 SQLite 文件里。

公司登记处、EORI、域名、工作日
  • 公司登记处直接从登记处获取信息:挪威 Brønnøysund Register Centre(NLOD 2.0)、法国 SIRENE 和国家登记处(通过国家开放 API,Licence Ouverte 2.0)、捷克 ARES、芬兰 PRH(CC BY 4.0);如果运营方设置了 COMPANIES_HOUSE_API_KEY(免费密钥),还可查询英国 Companies House(OGL v3.0);没有该密钥时不提供 GB 查询。首先在本地校验编号(挪威、捷克和芬兰的校验位;法国 SIRET 会转换为 SIREN)。状态包括:有效、停止经营/解散/删除、破产、清算中、重组中。
  • EORI 信息来自欧盟委员会的 EOS 服务;“无效”也是一种查询结果。
  • 仅向 IANA 引导文件中为该顶级域名列出的服务器查询 RDAP(仅限 https);子域名或 URL 会通过查询注册局转换为注册名称。某些国家代码(.de、.ru……)尚未提供 RDAP 服务——此类查询会被拒绝,且不收费。
  • RDAP 查询规范。 注册局的条款禁止高频自动查询和重新打包,因此 EMPORION 每分钟最多向一个注册局查询 30 次,每条结果缓存 24 小时(“未注册”的结果缓存一小时;缓存结果会标记 cached: true,并保留原始获取时间),同时会透传注册局自己的声明——包括其服务条款——作为 registry_terms。
  • 个人数据。 登记处也列有个体经营者,其记录均属于个人数据,无论登记处的许可如何规定。每条公司查询结果都包含 personal_data:用途(验证交易对手方)、依据(合法利益,GDPR 第 6(1)(f) 条)和保留期限(EMPORION 不保留副本;其调用日志仅保存输入的哈希)。
  • 工作日由编译进 EMPORION 的 python-holidays 提供:无需联网,也没有服务中断的风险;结果会注明该库的版本,因为该版本发布后公布的假日不会包含在内。

明确的限制

  • VIES 返回成员国登记机构当时提供的信息;有些国家不会返回名称或地址。EMPORION 不存储任何内容。
  • GLEIF 覆盖拥有 LEI 的实体——许多小型公司并没有 LEI。
  • 参考汇率仅供参考,不可用于交易。
  • 制裁筛查是在三个公开名单中进行查询,不构成法律建议或合规计划;不包括其他司法管辖区的名单。
  • 时间戳证明某事物最迟在区块所示时间已存在,但不能证明作者身份。
  • 网页捕获显示服务器当时向 EMPORION 返回的内容;其他访客、国家或 Cookie 可能会看到不同页面。它不代表内容属实。
  • 各登记机构公布的信息有所不同;目前覆盖四个国家的登记机构(加上英国密钥则为五个);尝试时,波兰 KRS API 没有响应。
  • 如果回调在四次尝试内返回 2xx,计时器至少会发送一次;接收方应将具有相同 due_at 的重复 timer_id 视为同一事件。

运行

# from this repository
docker build -f Dockerfile.standalone -t emporion .
docker run -d --name emporion -p 127.0.0.1:9351:9351 -v emporion-data:/data \
  -e EMPORION_PUBLIC_URL=http://127.0.0.1:9351 emporion
curl -s http://127.0.0.1:9351/health

在 aicom monorepo 中,可从根目录运行相同命令:docker compose -f emporion/docker-compose.yml up -d --build。EMPORION_PUBLIC_URL 是买家访问的地址;该地址会写入签名清单。

生产环境部署(从 aicom monorepo 执行):./scripts/deploy_emporion.sh --remote <host> 会通过现有 nginx 在 https://modelmarket.dev/providers/emporion/ 提供服务(使用一个配置片段,先备份,再在重新加载前运行 nginx -t),将正在运行的镜像保留为 emporion:prev,并在构建不健康时回滚。稳定运行时内存约为 200 MB;容器内存上限为 768 MB。进程以 uid 10001 运行。 其自身地址为 https://emporion.modelmarket.dev/——面向用户的首页位于 /,其他路径则为 Agent 提供相同的 API(deploy/nginx/emporion.modelmarket.dev.conf);/providers/emporion/ 路径仍是 hub 进行联邦调用时使用的地址。

变量默认值含义
EMPORION_PUBLIC_URLhttps://modelmarket.dev/providers/emporion清单中的基础 URL
EMPORION_PORT9351监听端口
EMPORION_RATE_LIMIT120每个客户端每分钟可调用的次数
EMPORION_CORS_ORIGINSempty (no browser origin)CORS 允许列表
COMPANIES_HOUSE_API_KEYempty (GB not offered)运营方免费的 Companies House API 密钥
EMPORION_TIMERS_DBtimers.sqlite beside the signing key计时器的存储位置
ORACLE_PQC1 in compose混合 ML-DSA-65 签名

测试:pip install -e "vendor/oracle-core[pqc]" -e '.[dev]' && pytest(在 monorepo 中:-e ../oracles/core)——针对真实响应摘录运行 160 项测试,不会访问任何实时数据源;在 monorepo 中,还会逐字节对照 hub 自有函数检查签名规范化内容。

来源和许可证

来源许可证答案中附带的署名
EU VIES欧盟委员会再利用政策(Decision 2011/833/EU)European Commission,VIES
GLEIFCC0 1.0Global Legal Entity Identifier Foundation (GLEIF),CC0
ECB转载时注明来源来源:European Central Bank
OFAC SDN美国政府作品(公共领域)U.S. Department of the Treasury,OFAC
EU Financial Sanctions Files欧盟委员会再利用政策European Commission,FSF
UK Sanctions List (FCDO)Open Government Licence v3.0包含依据 Open Government Licence v3.0 授权的公共部门信息(UK Sanctions List,FCDO)
OpenTimestamps免费公共日历OpenTimestamps (opentimestamps.org)
Bitcoin 区块头公共链数据,通过点对点方式获取Bitcoin 网络
EU EORI (EOS)欧盟委员会再利用政策European Commission,EORI 验证(EOS)
Brønnøysund Register CentreNLOD 2.0Brønnøysundregistrene,Enhetsregisteret (NLOD 2.0)
API Recherche d'entreprisesLicence Ouverte 2.0 (Etalab)DINUM,API Recherche d'entreprises (INSEE SIRENE,INPI RNE)
ARES捷克公共行政开放数据Ministerstvo financí ČR,ARES
PRH / YTJCC BY 4.0Finnish Patent and Registration Office (PRH),YTJ 开放数据
Companies House (with a key)Open Government Licence v3.0包含来自 Companies House 的公共部门信息,OGL v3.0
RDAP公共注册数据(RFC 9083)IANA RDAP 引导信息和顶级域注册机构
python-holidaysMITpython-holidays (vacanza/holidays)

代码:MIT — 请参阅 LICENSE。本项目使用的 OpenTimestamps 参考库采用 LGPL-3.0 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。