Jithox

com.jithox由 jithox.com 發布官方發布者v1.1.0更新於 Oct 24, 2026

8 invoice/payment tools; 5 free, no login. IBAN, bank changes, Peppol. Paid VAT and invoice review.

發布方自己的服務:Jithox Commerce Preflight

已驗證Streamable HTTP可網頁執行金融安全與監控商業與電商

概覽

AI 產生的概覽

遠端 MCP 伺服器,用於付款前與電子發票檢查:IBAN 結構、供應商銀行帳戶變更、Peppol 就緒性與歐盟 VAT 查詢,並附簽章證據。

可以做什麼
付款前檢查:比對人工核准與擬付款項,執行通道檢查,回傳 stop、review_required 或 no_blockers_found 結論及簽章證據,從不實際付款,也不宣稱帳戶安全。離線驗證 IBAN 結構與檢查碼,並將供應商銀行帳戶變更判定為 no_change、verify_first、stop 或 invalid_new_account。審查結構化發票的 Peppol 欄位、合計與歐盟 VIES VAT,並依 21 條已發布的 Peppol BIS Billing 3.0 規則檢查,逐條列出規則與修正建議。查詢 Peppol 參與者,了解電子發票接收能力、文件類型與故障聯絡人。在 VIES 查詢單一歐盟 VAT 或企業編號,或逐列檢查最多 20 列 VAT 號碼。
適用情境
適用於 AI 助理準備電子發票或付款、並希望在送出、提交至 Peppol 或付款之前先做檢查的情境,尤其是供應商銀行資料變更時。免費的唯讀檢查適合日常 IBAN、銀行變更與 Peppol 驗證;付費的 VAT 與發票審查適合需要登記冊確認的情況。
執行需求
遠端 Streamable HTTP 端點,無需本機執行環境。列出工具與免費檢查不需帳號或權杖。付費工具(公司查詢、發票審查、VAT 清單)需要 bearer 權杖與額度,且餘額須足以涵蓋整次呼叫才會執行。每個 IP 每分鐘 30 次請求限制。
安裝前請注意
付費工具會消耗額度(例如每次公司查詢 2 額度、每次發票審查 8 額度、20 列 VAT 清單 20 額度);呼叫前應確認費用與授權。結果屬技術性檢查,不構成法律或稅務建議,也無法證明帳戶存在、付款安全,或 Peppol 會接受或送達文件。不會送出、提交或付款,未執行的檢查會標示為 not_run 而非通過。參與者查詢會存取第三方 Peppol 登記冊。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Jithox,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.jithox%2Fjithox/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "jithox": {
      "type": "http",
      "url": "https://jithox.com/api/mcp"
    }
  }
}

README

Jithox MCP — check a payment before your AI agent makes it

Jithox runs a remote MCP server. Its front door is preflight_payment: one free call, before an agent pays an invoice, that answers stop, review_required or no_blockers_found with signed evidence. Next to it are read-only checks for e-invoices and payments: IBAN structure, supplier bank-detail changes, Peppol BIS Billing 3.0 rule validation, Peppol participant (receiver) lookup, and VIES lookup.

It is for developers and AI agents that prepare an e-invoice or a payment and want a check before something is sent, submitted to Peppol, or paid.

This repository holds examples, a registry manifest and one agent plugin package. It contains no server code. The server itself is hosted by Jithox.

Install

text
Remote MCP URL: https://jithox.com/api/mcpClaude Code: claude mcp add --transport http jithox https://jithox.com/api/mcpCodex: codex mcp add jithox --url https://jithox.com/api/mcpCursor: cursor://anysphere.cursor-deeplink/mcp/install?name=jithox&config=eyJ1cmwiOiJodHRwczovL2ppdGhveC5jb20vYXBpL21jcCJ9VS 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%7DGemini CLI (~/.gemini/settings.json): {"mcpServers":{"jithox":{"httpUrl":"https://jithox.com/api/mcp"}}}

Agent package

See PACKAGE.md for the portable Agent Plugins package and its Claude Code, Cursor, Gemini and Grok configuration. Validation scope and primary sources are in docs/PLUGIN_VALIDATION.md. No public directory listing or recommendation is implied.

After the reviewed package reaches the public default branch, Claude Code can discover this repository marketplace with:

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

For Agent-Skills-compatible clients:

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

The v1.0.0 discovery-only check DISABLE_TELEMETRY=1 npx skills add . --list listed one skill on 2026-10-02. The GEBRUIK1 candidate contains five skills; that file inventory is not an installation or completed agent task. The remote command installs from the published repo; review its permissions and selected version before accepting.

Build the upload ZIP deterministically from the repository root:

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

The builder includes only its explicit runtime-file allowlist. ZIP uploads, publisher verification and directory applications remain owner actions.

Wat je je agent kunt vragen

Natuurlijke vraagSkill / commandnaamGratis/betaaldEerlijke uitkomst
"Controleer deze factuur en betaalrun voordat ik betaal; meld wat niet gecontroleerd is."pay-invoices-safelyBasischecks gratis; VAT/volledige review betaald na prijs en toestemmingBevindingen en openstaande controles; geen betaling of betaaltoestemming.
"Het leveranciers-IBAN is gewijzigd; vergelijk het met onze administratie."verify-bank-detail-changeGratisstop, verify_first of no_change; terugbellen via eigen administratie, geen recordwijziging.
"Bereid deze e-factuur Peppol voor en controleer de ontvanger."send-peppol-invoiceGratisRegelbevindingen en documentondersteuning; geen verzending, acceptatie- of leveringsgarantie.
"Controleer dit betaalvoorstel voordat mijn agent geld uitgeeft."agent-payment-preflightGratisEchte preflight en beperkingen; onbekend is geen pass, er wordt niets betaald.
"Controleer deze btw-lijst of zoek dit bedrijf op; wat kost het?"check-vat-numbersBetaald; actuele kosten eerst uit live tools/listToestemming vóór de call; zonder toegang not_run en de live verbindingsstap, geen verzonnen registerantwoord.

Gebruik gewone vragen voor skillselectie; activatie verschilt per client en is nog geen bewezen taak. Expliciet: Claude /jithox:<commandnaam> (pluginnamespace), Gemini /<commandnaam> (bij naamconflict kan de extensionnamespace verschijnen). De bestanden staan in commands/*.md en commands/*.toml; alle vijf skills hebben precies twee scenario's in hun eigen references/examples.md. Zie GEBRUIK1-validatie en het reproduceerbare evalpakket. Eigen probes zijn geen extern gebruik. Deze kandidaat is niet gepubliceerd of als beter geëvalueerd.

Before your agent pays: preflight_payment

Call preflight_payment once, before your agent pays an invoice. It compares what the person approved, as your agent reports it (payee, amount, currency, account), with what is about to be paid; checks the IBAN and a changed supplier bank account against the one on file; and answers stop, review_required or no_blockers_found, with every check, what it does not prove, and a signed evidence token. No account, no token. It never pays and never calls an account safe: a check that did not run is listed as not_run, never as a pass.

The 2026-09-25 measurement covered only invoice_bank; the other rails then returned review_required with rail_not_covered. This is historical evidence, not current coverage: read the live schema and every returned check for the actual invoice_bank, x402, card_or_giftcard or crypto_bridge proposal.

The person approved paying invoice 2026-105 to Acme BV; the invoice now asks for a different account than the one on file. The payment instruction is copied from that invoice, so instructionSource is ingested_content, while approved separately records what the person approved. These are fictional sample inputs:

bash
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"}}}'

The corrected request above was measured anonymously on 2026-10-03 with x-jithox-probe: gebruik1-fix: HTTP 200, review_required, instruction: warn, reasons instruction_not_from_human and payment_change_verify_first, and charged: false. Missing invoice/VAT checks remained not_run. No payment was made; the human approval did not change the invoice instruction's source.

Historical output from the old, incorrectly human-labelled request, measured on 2026-09-25; not the response to the corrected request above. The unwrapped result is retained unchanged; … marks where it was shortened for this page:

json
{  "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",    …  }}

Anyone can check that a verdict was not changed: POST the jws (optionally with the input and its inputSalt) to https://jithox.com/api/v1/evidence/verify. The untouched token answered "status": "valid"; the same token with its verdict changed answered "invalid" with reason signature_mismatch (tested 2026-09-25).

Connect

https://jithox.com/api/mcp

Transport: Streamable HTTP (POST, JSON-RPC 2.0). No account or token is needed for tools/list.

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

Claude Desktop

Open Settings → Developer → Edit Config, and add the block above to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json). Restart Claude Desktop.

Current tools

Use tools/list on this endpoint as the source for current availability: tool names, descriptions and input schemas. Read that live response rather than relying on a fixed tool count or catalog in this README.

Limits: 30 requests per minute per IP on this endpoint; above that you get HTTP 429 with Retry-After.

Peppol calls, run against production on 2026-09-23

Output is shown as returned; … marks where it was shortened for this page.

1. Will Peppol accept this invoice?

bash
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"}}}}'

The tool result (result.content[0].text), unwrapped:

json
{  "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."  }}

Change issueDate to "23/09/2026" or drop buyerReference and the same call returns "verdict": "will_be_rejected" with the specific rule that failed (e.g. PEPPOL-EN16931-F001, PEPPOL-EN16931-R003) — checked 2026-09-22.

2. Can this customer actually receive it over Peppol?

bash
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"}}}'
json
{  "kind": "peppol_participant_lookup",  "data": {    "participantId": "0208:0403170701",    "reachable": "yes",    "documentTypes": [      { "profile": "Peppol BIS Billing 3.0", "document": "Invoice", "raw": "…" }      …    ]  }}

This asks the live Peppol directory about a THIRD PARTY. It is never a promise the invoice will arrive, be accepted or be paid — every answer says so.

Examples in code

  • examples/python/preflight_payment.py — standard library only: initialize, then preflight_payment on a payment whose supplier bank account changed, then POST /api/v1/evidence/verify on the signed answer. Run with python examples/python/preflight_payment.py. Historical output from the old Python example (instructionSource=human), measured on 2026-09-25; not output from the corrected script:
    server: jithox-engineverdict: review_requiredreasons: ['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: Falseevidence: valid inputMatch: True
  • examples/python/peppol_ready.py — standard library only: initialize, then check_peppol_ready on a compliant invoice, then lookup_peppol_participant on the buyer. Run with python examples/python/peppol_ready.py. Real output against production, 2026-09-23:
    server: jithox-engineverdict: ready - Nothing is wrong among the 21 rules this check covers.reachable: yes participant: 0208:0403170701
  • examples/python/free_tools.py — standard library only: initialize, tools/list, then verify_iban.
  • examples/csharp/Program.cs — .NET Framework 4.x, no packages: initialize, then the free check_payment_change with fictitious Belgian accounts. Prints the server, verdict, reason, human steps and doesNotProve from the response (charged only when supplied). HTTP timeout: 15 seconds; HTTP, JSON-RPC, tool errors and missing/invalid result fields exit nonzero. From examples/csharp, compile with csc /nologo /r:System.Net.Http.dll /r:System.Runtime.Serialization.dll Program.cs, run offline checks with Program.exe --self-test, then the live example with Program.exe. Exit 0 means a valid response, not permission to pay.
  • examples/dogfood/ — our own dogfood example (in Dutch): the paid check_vat_list on the VAT number of an invoice we received.

Agent Skill: pay-invoices-safely

skills/pay-invoices-safely/SKILL.md is an Agent Skill for an agent that is about to pay a supplier invoice or change a supplier's bank account. It teaches the agent to call check_payment_change on every new IBAN and to hold the payment for a call-back by a person, to compare approval and proposed payment with preflight_payment, and to check the invoice with check_peppol_ready. Required VAT/company checks use the existing tools only with an authorized connection; missing access is reported as not_run. A required unknown or not_run check prevents a ready report.

It is written for three triggers: every supplier bank change, every invoice IBAN that differs from the vendor record, and every payment run.

Install from a clean folder

Set SKILLS_DIR to the skills directory that the documentation of your own Agent-Skills-compatible client names. This repository does not know that path for any client; do not guess it. Then run this in a POSIX shell (Git Bash on Windows works), with git and Node 18+ installed. It pins the public repository at commit 9193a770320aa144e66e8630c830be33858f21ad, the main head measured on 2026-09-28; use a newer commit only after you have reviewed it.

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)

If SKILLS_DIR is empty the flow stops with a non-zero status before anything is fetched or copied. Otherwise it copies exactly skills/pay-invoices-safely (SKILL.md and references/examples.md) to $SKILLS_DIR/pay-invoices-safely, overwriting files of the same name there.

The last command checks the source copy, not your installed one: it verifies the spec rules, runs each curl example against production (free, read-only HTTP calls), requires every tool it calls to be in the live tools/list, and rejects price-like text. The current checker makes one narrow exception for the two exact VAT-skill cost lines when they also match live tools/list; it does not allow arbitrary prices or money claims elsewhere. Commands mirror the skill body and are pinned separately.

A clone, a copy and our own checker show that the files can be fetched and that the examples still run. They do not show that any agent loaded the skill, completed a task with it, or used it a second time.

Machine-readable pointers

What this server does not do

Nothing on this endpoint sends an invoice, submits it to Peppol, posts, pays or delivers anything. Results are technical checks, not legal or tax advice.

License

The examples and package code/documentation are MIT-licensed (see LICENSE). Official schema snapshots retain their Apache-2.0 license in scripts/schemas/. Brand-asset provenance and rights are in assets/ORIGIN.md. The Jithox service itself is not open source.

來源:README.md,提交 4a87801

工具

8

review_invoice

Review an invoice

Check a structured invoice: Peppol fields, totals, EU VIES VAT, fixes and UBL XML. Never sends; unanswered VAT is unknown. No receiver lookup here. If the receiver has a Peppol address, next call check_peppol_ready with this invoice. 8 credits (EUR 0.08) per review the VAT register answered; needs a bearer token.

輸入參數notelines必填dueDatepaymentcurrencycustomer必填supplier必填totalVatissueDate必填totalWithVatinvoiceNumber必填buyerReference另有 2 個

verify_iban

Check an IBAN

Check an IBAN's structure and check digits for 70+ countries, offline. It never claims the account exists or who owns it. Free, no token.

輸入參數iban必填expectedCountry

check_peppol_ready

Check Peppol invoice readiness

Check your own invoice against 21 published Peppol BIS Billing 3.0 rules, and whether the customer's Peppol address is registered; each finding names the rule and the fix. A listed subset, not the official validator. Free, no token.

輸入參數linescurrencycustomersuppliertotalVatissueDatetotalWithVatinvoiceNumberbuyerReferenceorderReferencedocumentChargestotalWithoutVat另有 1 個

lookup_peppol_participant

Look up a Peppol receiver

Ask live Peppol registers about e-invoice reception, document types and failure contacts; never guarantees delivery. Not a VAT or company-register check; use kbo_company_search (one company) or check_vat_list (a list). Free, no token.

輸入參數schemeidentifier必填

check_payment_change

Check a supplier bank change

Check a supplier's bank-detail change before the vendor record is touched: returns no_change, verify_first, stop or invalid_new_account with call-back steps. It never says an account is safe. Free, no token.

輸入參數newIban必填ibanOnFilesupplierCountry

preflight_payment

Check before a payment

For a structured invoice, call review_invoice first. Before paying, compare the supplied human approval with the payment and run rail checks (invoice: IBAN, account change). Without approved: review_required or stop, never no_blockers_found. Returns checks and signed evidence. Never pays; unrun checks never pass. Free, no token.

輸入參數rail必填checksinvoicemandatepayment必填approvedibanOnFileinstructionSource

check_vat_list

Check EU VAT numbers

Check up to 20 rows of EU VAT numbers in EU VIES, row for row; a malformed or non-EU row is judged locally (`not_covered`, never `invalid`). UNKNOWN COSTS NOTHING, and the balance must cover the whole call (20 credits for 20 rows) before it runs. Optional requesterVatId adds a consultation number registered to you; a requester VIES refuses costs nothing. 1 credit (EUR 0.01) per answered row; needs a bearer token.

輸入參數rows必填requesterVatId

版本歷史

5
  1. v1.1.0最新Oct 3, 2026
  2. v1.0.4Sep 26, 2026
  3. v1.0.3Sep 26, 2026
  4. v1.0.2Sep 25, 2026
  5. v1.0.0Sep 23, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Jithox 整合