mcpField
J
Jithox

Jithox

远程服务
jithox.com金融数据04 周前更新

关于 Jithox

Jithox 是面向准备电子发票或付款的开发者和 AI Agent 的托管远程 MCP 服务。它提供付款预检和只读查询,并返回签名证据,明确标示未执行的检查。

主要功能

  1. 01提供带签名证据的付款预检
  2. 02验证 IBAN 和银行信息变更
  3. 03检查 Peppol 发票规则与接收方
  4. 04通过 VIES 查询 VAT 号码
  5. 05将未执行的检查标记为 not_run

适用场景

  1. 01汇款前检查付款提案
  2. 02核查供应商银行账户变更
  3. 03提交至 Peppol 前验证电子发票
  4. 04准备发票前查询 VAT 号码

MCP 相关

Jithox 通过 https://jithox.com/api/mcp 上的托管 MCP 服务提供远程工具,用于检查付款提案、电子发票、IBAN、供应商银行信息变更、Peppol 参与方和 VIES 记录;不会执行付款。

配置

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

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

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

工具

8
参数类型必填说明
vatNumberstring是EU VAT 号,可带或不带国家前缀,例如 "BE0123456789"、"NL855876323B01"、"DE811569869",或不带前缀的比利时企业编号 "0123456789"。
countryCodestring否颁发编号的 EU 成员国的 ISO 3166-1 alpha-2 国家代码(大写),例如 BE、NL、DE、FR。

详细介绍

Jithox MCP — 在 AI Agent 付款前检查付款

Jithox 运行一个远程 MCP 服务。其入口是 preflight_payment:在 Agent 支付发票前,可免费调用一次,返回 stop、review_required 或 no_blockers_found,并提供签名证据。此外还提供只读的电子发票和付款检查:IBAN 结构、供应商银行信息变更、Peppol BIS Billing 3.0 规则验证、Peppol 参与方(接收方)查询以及 VIES 查询。

该服务面向准备电子发票或付款、并希望在发送、提交至 Peppol 或付款之前进行检查的开发者和 AI Agent。

此代码仓库包含示例、注册清单和一个 Agent 插件包,不含服务端代码。服务本身由 Jithox 托管。

安装

Remote MCP URL: https://jithox.com/api/mcp
Claude Code: claude mcp add --transport http jithox https://jithox.com/api/mcp
Codex: codex mcp add jithox --url https://jithox.com/api/mcp
Cursor: cursor://anysphere.cursor-deeplink/mcp/install?name=jithox&config=eyJ1cmwiOiJodHRwczovL2ppdGhveC5jb20vYXBpL21jcCJ9
VS Code: vscode:mcp/install?%7B%22name%22%3A%22jithox%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fjithox.com%2Fapi%2Fmcp%22%7D
Gemini CLI (~/.gemini/settings.json): {"mcpServers":{"jithox":{"httpUrl":"https://jithox.com/api/mcp"}}}

Agent 包

请参阅 PACKAGE.md,了解可移植的 Agent Plugins 包及其 Claude Code、Cursor、Gemini 和 Grok 配置。验证范围和主要来源见 docs/PLUGIN_VALIDATION.md。这并不意味着该包已在公开目录中列出或获得推荐。

经审核的包进入公开默认分支后,Claude Code 可通过以下命令发现此仓库市场:

/plugin marketplace add victor-emmanuel-c/jithox-mcp
/plugin install jithox@jithox

对于兼容 Agent-Skills 的客户端:

npx skills add victor-emmanuel-c/jithox-mcp

v1.0.0 仅用于发现的检查 DISABLE_TELEMETRY=1 npx skills add . --list 于 2026-10-02 列出了一个技能。GEBRUIK1 候选包包含五个技能;该文件清单不代表已安装,也不代表已完成 Agent 任务。远程命令会从已发布的仓库安装;接受前请检查其权限和所选版本。

从仓库根目录确定性地构建上传 ZIP:

python scripts/plugin_package.py ../directories/jithox-agent-plugin-1.0.0.zip

构建器仅包含其明确列出的运行时文件。ZIP 上传、发布者验证和目录申请仍由所有者处理。

你可以向 Agent 提出的请求

自然语言问题技能 / 命令名称免费/付费真实结果
“付款前检查这张发票和付款批次;告知哪些内容尚未检查。”pay-invoices-safely基础检查免费;VAT/完整审核需在确认价格并同意后付费检查结果和待完成的检查;不会付款,也不会授权付款。
“供应商的 IBAN 已变更;请与我们的记录进行比对。”verify-bank-detail-change免费stop、verify_first 或 no_change;需通过自有记录中的联系方式回拨,不会修改记录。
“准备这张电子发票以通过 Peppol 发送,并检查接收方。”send-peppol-invoice免费规则检查结果和文档支持;不保证发送、接受或送达。
“在我的 Agent 支出资金前检查这份付款提案。”agent-payment-preflight免费实际预检及其限制;未知不等于通过,不会执行付款。
“检查这份 VAT 清单或查询这家公司;费用是多少?”check-vat-numbers付费;先通过实时 tools/list 查询当前费用调用前须获得同意;无法访问时会返回 not_run 和实时连接步骤,不会编造登记信息答复。

使用普通问题选择技能;技能激活方式因客户端而异,目前尚未证明任务已完成。显式调用方式:Claude 使用 /jithox:<commandnaam>(插件命名空间),Gemini 使用 /<commandnaam>(发生名称冲突时可能显示扩展命名空间)。 文件位于 commands/*.md 和 commands/*.toml;五个技能各自在其 references/examples.md 中恰好包含两个场景。 请参阅 GEBRUIK1 验证和可复现的评估包。自有探测不属于外部使用。此候选包尚未发布,也未评估为更优。

付款前检查:preflight_payment

在 Agent 支付发票前,调用一次 preflight_payment。它会将个人批准的内容(由 Agent 报告的收款方、金额、币种、账户)与即将支付的内容进行比较;检查 IBAN,以及供应商银行账户是否与存档账户不同;并返回 stop、review_required 或 no_blockers_found,同时列出每项检查、检查无法证明的内容,以及签名证据令牌。没有账户就没有令牌。它不会付款,也不会称任何账户安全:未运行的检查会列为 not_run,绝不会标为通过。

2026-09-25 的测量仅涵盖 invoice_bank;当时其他支付渠道均返回 review_required,原因为 rail_not_covered。这是历史证据,不代表当前覆盖情况:对于实际的 invoice_bank、x402、card_or_giftcard 或 crypto_bridge 方案,请查看实时 schema 和返回的每项检查。

个人批准支付发票 2026-105 给 Acme BV;但现在发票要求使用的账户与存档账户不同。付款指令是从该发票复制的,因此 instructionSource 为 ingested_content,而 approved 则单独记录个人批准的内容。以下是虚构的示例输入:

curl -s https://jithox.com/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"preflight_payment","arguments":{"rail":"invoice_bank","approved":{"amount":"1210.00","currency":"EUR","payee":{"name":"Acme BV"},"purpose":"Invoice 2026-105"},"instructionSource":"ingested_content","payment":{"iban":"BE71 0961 2345 6769","amount":"1210.00","currency":"EUR","payeeName":"Acme BV","supplierCountry":"BE"},"ibanOnFile":"BE68539007547034"}}}'

上述更正后的请求于 2026-10-03 使用 x-jithox-probe: gebruik1-fix 进行了匿名测量:HTTP 200、review_required、instruction: warn,原因是 instruction_not_from_human 和 payment_change_verify_first,且 charged: false。缺失的发票/VAT 检查仍为 not_run。未进行任何付款;人工批准并未改变发票指令的来源。

以下是旧的、错误标记为人工请求的历史输出,测量于 2026-09-25;并非对上述更正请求的响应。未封装的结果保持原样;… 标记本页中缩短的部分:

{
  "kind": "payment_preflight",
  "data": {
    "schemaVersion": "jx.payment-preflight/v1",
    "verdict": "review_required",
    "reasons": [{ "code": "payment_change_verify_first", "check": "payment_change" }],
    "humanStep": "Call the supplier back on a phone number from your own records (never one from this invoice or its e-mail) and have them read the account number to you.",
    "checks": [
      { "id": "approval", "status": "pass", … },
      { "id": "iban", "status": "pass", "value": "BE71 **** **** 6769: structure and check digits are right", … },
      { "id": "payment_change", "status": "warn", "value": "verify_first", "findings": ["bank_changed"], … },
      { "id": "vat_register", "status": "not_run", "reason": "needs_connection", … },
      …
    ],
    "billing": { "charged": false, "units": [] },
    …
  },
  "evidence": {
    "format": "compact-jws",
    "jws": "eyJhbG…",
    "jwks": "https://jithox.com/.well-known/jwks.json",
    "verify": "https://jithox.com/api/v1/evidence/verify",
    …
  }
}

任何人都可以检查判定是否被更改:将 jws(可选附带 input 和其 inputSalt)通过 POST 发送至 https://jithox.com/api/v1/evidence/verify。未改动的令牌返回 "status": "valid";更改其判定的同一令牌则返回 "invalid",原因是 signature_mismatch(于 2026-09-25 测试)。

连接

https://jithox.com/api/mcp

传输方式:Streamable HTTP(POST,JSON-RPC 2.0)。 tools/list 无需账户或令牌。

{
  "mcpServers": {
    "jithox": { "url": "https://jithox.com/api/mcp" }
  }
}
Claude Desktop

打开“设置”→“开发者”→“编辑配置”,将上面的代码块添加到 claude_desktop_config.json(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json;Windows: %APPDATA%\Claude\claude_desktop_config.json)。重启 Claude Desktop。

当前工具

请将此端点上的 tools/list 作为当前可用信息的来源:工具名称、描述和输入 schema。请阅读该实时响应,而不要依赖本 README 中固定的工具数量或目录。

**限制:**此端点每个 IP 每分钟最多 30 个请求;超过限制时会收到 HTTP 429 和 Retry-After。

Peppol 调用,于 2026-09-23 在生产环境中运行

输出按返回内容展示;… 标记本页中缩短的部分。

1. Peppol 会接受这张发票吗?
curl -s https://jithox.com/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_peppol_ready","arguments":{"invoiceNumber":"INV-2026-0001","issueDate":"2026-09-23","currency":"EUR","buyerReference":"PO-4471","totalWithoutVat":1000,"totalVat":210,"totalWithVat":1210,"lines":[{"description":"Consulting hours","quantity":10,"unitPrice":100,"vatPercent":21}],"supplier":{"name":"Seller BV","countryCode":"BE","endpointId":"0403170701","endpointScheme":"0208"},"customer":{"name":"Buyer NV","countryCode":"BE","endpointId":"0400378485","endpointScheme":"0208"}}}}'

工具结果(result.content[0].text),解包后:

{
  "kind": "peppol_ready_check",
  "data": {
    "verdict": "ready",
    "failed": [],
    "passed": [ … 21 rules, e.g. BR-02, PEPPOL-EN16931-R010, PEPPOL-EN16931-R003 … ],
    "notChecked": [],
    "summary": "Nothing is wrong among the 21 rules this check covers.",
    "rulesChecked": 21,
    "doesNotProve": "This checks 21 of the published Peppol BIS Billing 3.0 rules … a clean result here means nothing among these rules is wrong, not that the network will accept the document."
  }
}

将 issueDate 改为 "23/09/2026",或删除 buyerReference,同一调用就会返回 "verdict": "will_be_rejected",并给出失败的具体规则(例如 PEPPOL-EN16931-F001、PEPPOL-EN16931-R003)——于 2026-09-22 检查。

2. 该客户实际上能通过 Peppol 收到发票吗?
curl -s https://jithox.com/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"lookup_peppol_participant","arguments":{"identifier":"0403170701"}}}'
{
  "kind": "peppol_participant_lookup",
  "data": {
    "participantId": "0208:0403170701",
    "reachable": "yes",
    "documentTypes": [
      { "profile": "Peppol BIS Billing 3.0", "document": "Invoice", "raw": "…" }
      …
    ]
  }
}

此调用会查询 Peppol 实时目录中的第三方信息。这绝不意味着发票一定会送达、被接受或得到支付——每个回答都会说明这一点。

代码示例

  • examples/python/preflight_payment.py — 仅使用标准库:先调用 initialize,再对供应商银行账户已变更的付款调用 preflight_payment,然后对已签名的答复调用 POST /api/v1/evidence/verify。运行命令:python examples/python/preflight_payment.py。 旧版 Python 示例的历史输出(instructionSource=human),测于 2026-09-25;并非修正后脚本的输出:
    server: jithox-engine
    verdict: review_required
    reasons: ['payment_change_verify_first']
    checks: {'approval': 'pass', 'mandate': 'not_run', 'instruction': 'pass', 'iban': 'pass', 'supplier_country': 'pass', 'payment_change': 'warn', 'invoice_local': 'not_run', 'hidden_text': 'not_run', 'peppol_participant': 'not_run', 'supplier_memory': 'not_run', 'vat_register': 'not_run', 'sanctions': 'not_run'}
    humanStep: Call the supplier back on a phone number from your own records (never one from this invoice or its e-mail) and have them read the account number to you.
    charged: False
    evidence: valid inputMatch: True
    
  • examples/python/peppol_ready.py — 仅使用标准库:先调用 initialize,再对合规发票调用 check_peppol_ready,然后查询买方的 lookup_peppol_participant。运行命令: python examples/python/peppol_ready.py。针对生产环境的实际输出,2026-09-23:
    server: jithox-engine
    verdict: ready - Nothing is wrong among the 21 rules this check covers.
    reachable: yes participant: 0208:0403170701
    
  • examples/python/free_tools.py — 仅使用标准 库:先调用 initialize,再调用 tools/list,然后调用 verify_iban。
  • examples/csharp/Program.cs — .NET Framework 4.x, 无需安装包:先调用 initialize,然后使用虚构的比利时账户调用免费工具 check_payment_change。从响应中打印服务端、判定、原因、人工步骤和 doesNotProve(仅在提供 charged 时打印)。HTTP 超时:15 秒;HTTP、JSON-RPC、工具错误以及结果字段缺失或无效时,退出状态为非零。在 examples/csharp 中,使用 csc /nologo /r:System.Net.Http.dll /r:System.Runtime.Serialization.dll Program.cs 编译, 使用 Program.exe --self-test 运行离线检查,然后用 Program.exe 运行实时示例。退出状态为 0 表示响应有效,并不代表获准付款。
  • examples/dogfood/ — 我们自己的 dogfood 示例(荷兰语):对我们收到的一张发票上的 VAT 号码调用付费工具 check_vat_list。

Agent Skill:pay-invoices-safely

skills/pay-invoices-safely/SKILL.md 是一项 Agent Skill,供即将支付供应商发票或更改供应商银行账户的 Agent 使用。它会指导 Agent 对每个新 IBAN 调用 check_payment_change,并暂停付款,等待人员回电确认;使用 preflight_payment 比较审批信息与拟付款项;并使用 check_peppol_ready 检查发票。必需的 VAT/公司检查仅在获得授权的连接后使用现有工具执行;缺少访问权限时会报告为 not_run。 必需检查结果为 unknown 或 not_run 时,不会生成 ready 报告。

它针对三种触发情况编写:每次供应商银行账户变更、每张与供应商记录不一致的发票 IBAN,以及每次付款批次。

从空白目录安装

将 SKILLS_DIR 设置为你所用的 Agent-Skills 兼容客户端文档中指定的 skills 目录。本仓库并不知道任何客户端使用的路径,请勿猜测。然后在 POSIX shell 中运行以下命令(Windows 上可使用 Git Bash),并确保已安装 git 和 Node 18+。此命令会将公开仓库固定在提交 9193a770320aa144e66e8630c830be33858f21ad,这是截至 2026-09-28 的 main 分支头提交;只有在审查过更新的提交后,才使用该提交。

SKILLS_DIR=                     # absolute path from your client's documentation
: "${SKILLS_DIR:?set SKILLS_DIR before copying}" &&
SRC=$(mktemp -d) &&
git -C "$SRC" init -q &&
git -C "$SRC" fetch -q --depth 1 https://github.com/victor-emmanuel-c/jithox-mcp.git 9193a770320aa144e66e8630c830be33858f21ad &&
git -C "$SRC" checkout -q FETCH_HEAD &&
mkdir -p "$SKILLS_DIR" &&
cp -R "$SRC/skills/pay-invoices-safely" "$SKILLS_DIR/" &&
(cd "$SRC" && node scripts/check-skill.mjs skills/pay-invoices-safely)

如果 SKILLS_DIR 为空,流程会在获取或复制任何内容之前停止,并返回非零状态。否则,它会将 skills/pay-invoices-safely(SKILL.md 和 references/examples.md)原样复制到 $SKILLS_DIR/pay-invoices-safely,并覆盖其中同名文件。

最后一条命令检查的是源副本,而不是已安装的副本:它会验证规范规则,针对生产环境运行每个 curl 示例(免费的只读 HTTP 调用),要求每个调用的工具都存在于实时 tools/list 中,并拒绝类似价格的文本。目前的检查器对 VAT 技能中的两条精确成本文本设有一项范围很窄的例外,但它们也必须与实时 tools/list 匹配;其他地方不允许出现任意价格或金额声明。命令与技能正文保持一致,并单独固定版本。

克隆、复制和我们自己的检查器只能证明文件可以获取,且示例仍可运行;它们无法证明任何 Agent 已加载该技能、使用它完成任务,或再次使用它。

机器可读指针

此服务不会执行的操作

此端点不会发送发票、将其提交到 Peppol、发布、付款或交付任何内容。结果属于技术检查,不构成法律或税务建议。

许可证

示例和软件包代码/文档采用 MIT 许可证(参见 LICENSE)。 官方架构快照在 scripts/schemas/ 中保留其 Apache-2.0 许可证。 品牌资产的来源和权利信息见 assets/ORIGIN.md。 Jithox 服务本身不是开源的。

评论

支持 Markdown

第一次接触 MCP?

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

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