关于 Jithox
Jithox 是面向准备电子发票或付款的开发者和 AI Agent 的托管远程 MCP 服务。它提供付款预检和只读查询,并返回签名证据,明确标示未执行的检查。
主要功能
- 01提供带签名证据的付款预检
- 02验证 IBAN 和银行信息变更
- 03检查 Peppol 发票规则与接收方
- 04通过 VIES 查询 VAT 号码
- 05将未执行的检查标记为 not_run
适用场景
- 01汇款前检查付款提案
- 02核查供应商银行账户变更
- 03提交至 Peppol 前验证电子发票
- 04准备发票前查询 VAT 号码
MCP 相关
Jithox 通过 https://jithox.com/api/mcp 上的托管 MCP 服务提供远程工具,用于检查付款提案、电子发票、IBAN、供应商银行信息变更、Peppol 参与方和 VIES 记录;不会执行付款。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://jithox.com/api/mcpclaude mcp add --transport http com-jithox-jithox https://jithox.com/api/mcp{"mcpServers":{"com-jithox-jithox":{"type":"http","url":"https://jithox.com/api/mcp"}}}在 Cursor 中打开{"servers":{"com-jithox-jithox":{"type":"http","url":"https://jithox.com/api/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-jithox-jithox":{"type":"http","url":"https://jithox.com/api/mcp"}}}{"mcpServers":{"com-jithox-jithox":{"serverUrl":"https://jithox.com/api/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
8| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| vatNumber | string | 是 | EU VAT 号,可带或不带国家前缀,例如 "BE0123456789"、"NL855876323B01"、"DE811569869",或不带前缀的比利时企业编号 "0123456789"。 |
| countryCode | string | 否 | 颁发编号的 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: Trueexamples/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:0403170701examples/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 已加载该技能、使用它完成任务,或再次使用它。
机器可读指针
- https://jithox.com/llms.txt
- https://jithox.com/.well-known/mcp.json
- 本仓库中的
server.json,遵循官方 MCP 注册表架构(2025-12-11)。该服务也已发布到官方 MCP 注册表,名称为com.jithox/jithox(registry.modelcontextprotocol.io/v0/servers?search=com.jithox/jithox)。
此服务不会执行的操作
此端点不会发送发票、将其提交到 Peppol、发布、付款或交付任何内容。结果属于技术检查,不构成法律或税务建议。
许可证
示例和软件包代码/文档采用 MIT 许可证(参见 LICENSE)。 官方架构快照在 scripts/schemas/ 中保留其 Apache-2.0 许可证。 品牌资产的来源和权利信息见 assets/ORIGIN.md。 Jithox 服务本身不是开源的。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。