Jithox について
Jithoxは、電子請求書や支払いを準備する開発者とAIエージェント向けの、ホスト型リモートMCPサーバーです。支払い前チェックや読み取り専用の照会を行い、署名付き証拠と未実行のチェックを明示します。
主な機能
- 01署名付き証拠を伴う支払い前チェック
- 02IBANと銀行情報変更の検証
- 03Peppolの請求書ルールと受取先の確認
- 04VIESによるVAT番号の照会
- 05未実行の項目をnot_runとして報告
活用シーン
- 01送金前に支払い案を確認する
- 02仕入先の銀行口座変更を確認する
- 03Peppol送信前に電子請求書を検証する
- 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 エージェントが支払う前に決済をチェック
Jithox はリモートの MCP サーバーを稼働しています。最初に呼び出すのは preflight_payment です。エージェントが請求書を支払う前に、無料で 1 回呼び出すと、署名付きの証拠とともに stop、review_required、no_blockers_found のいずれかを返します。これに加えて、電子請求書と支払いの読み取り専用チェックもあります。IBAN の構造、サプライヤーの銀行口座情報の変更、Peppol BIS Billing 3.0 のルール検証、Peppol 参加者(受取人)の検索、VIES 検索を確認できます。
電子請求書や支払いの準備を行い、送信、Peppol への提出、または支払いの前にチェックしたい開発者や AI エージェント向けです。
このリポジトリには、サンプル、レジストリマニフェスト、エージェントプラグインパッケージが 1 つ含まれています。サーバーコードは含まれていません。サーバー自体は 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 Plugins パッケージと、Claude Code、Cursor、Gemini、Grok 向けの設定については、PACKAGE.md を参照してください。検証範囲と主な情報源については、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 に 1 つのスキルが表示されました。GEBRUIK1 候補には 5 つのスキルが含まれていますが、このファイル一覧はインストールやエージェントタスクの完了を示すものではありません。リモートコマンドは公開済みリポジトリからインストールします。承認する前に、権限と選択したバージョンを確認してください。
リポジトリのルートから、アップロード用 ZIP を決定論的にビルドします。
python scripts/plugin_package.py ../directories/jithox-agent-plugin-1.0.0.zip
ビルダーが含めるのは、明示的に許可リストに指定されたランタイムファイルのみです。ZIP のアップロード、公開者の検証、ディレクトリへの申請は、引き続き所有者が行います。
エージェントに尋ねられること
| 自然な質問 | スキル/コマンド名 | 無料/有料 | 正直な結果 |
|---|---|---|---|
| 「支払う前に、この請求書と支払い処理をチェックして、未確認の項目を教えてください。」 | pay-invoices-safely | 基本チェックは無料。VAT/完全なレビューは、料金と同意の確認後に有料 | 指摘事項と未完了のチェック。支払いも支払い許可も行いません。 |
| 「サプライヤーの IBAN が変更されました。社内記録と照合してください。」 | verify-bank-detail-change | 無料 | stop、verify_first、no_change のいずれか。社内記録を使って折り返し確認し、記録は変更しません。 |
| 「この電子請求書を Peppol で送信する準備をして、受取人を確認してください。」 | send-peppol-invoice | 無料 | ルールに関する指摘とドキュメントのサポート。送信、受理、配達は保証しません。 |
| 「エージェントがお金を使う前に、この支払い案をチェックしてください。」 | agent-payment-preflight | 無料 | 実際の事前チェックと制限事項。不明は合格ではなく、支払いは行われません。 |
| 「この VAT リストを確認するか、この会社を検索してください。料金はいくらですか?」 | check-vat-numbers | 有料。最新の料金は、まずライブツール/list から確認 | 呼び出し前に同意を得ます。アクセスできない場合は not_run とライブ接続の手順を返し、レジストリの回答を捏造しません。 |
通常の質問を使ってスキルを選択してください。アクティベーションの方法はクライアントによって異なり、タスクとしての実証はまだありません。明示的な呼び出し方法:Claude は /jithox:<commandnaam>(プラグインの名前空間)、Gemini は /<commandnaam>(名前が競合する場合は extension の名前空間が表示されることがあります)。
ファイルは commands/*.md と commands/*.toml にあり、5 つすべてのスキルについて、各 references/examples.md にシナリオが 2 つずつあります。
GEBRUIK1 の検証 と再現可能な評価パッケージを参照してください。独自のプローブは外部での使用実績ではありません。この候補は公開されておらず、より優れているという評価も受けていません。
エージェントが支払う前に:preflight_payment
エージェントが請求書を支払う前に、preflight_payment を一度呼び出してください。本人が承認した内容を、エージェントが報告した情報(受取人、金額、通貨、口座)と、実際に支払われようとしている内容とで比較します。また、IBAN と、変更された仕入先の銀行口座を登録済みの口座と照合し、stop、review_required、no_blockers_found のいずれかを返します。すべてのチェック、そのチェックで証明できないこと、署名付きの証拠トークンも返します。口座がなければ、トークンもありません。支払いを実行することはなく、口座を安全だと判断することもありません。実行されなかったチェックは not_run として記載され、合格扱いにはなりません。
2026-09-25 の測定対象は invoice_bank のみでした。当時、ほかの決済レールは rail_not_covered を伴う review_required を返しました。これは過去の証拠であり、現在の対応状況を示すものではありません。実際の invoice_bank、x402、card_or_giftcard、crypto_bridge の提案については、ライブスキーマと返されたすべてのチェックを確認してください。
本人は請求書 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 も)https://jithox.com/api/v1/evidence/verify に POST してください。変更されていないトークンは "status": "valid" を返しました。同じトークンの判定を変更すると、理由 signature_mismatch とともに "invalid" が返されました(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 を使用してください。ツール名、説明、入力スキーマを確認できます。この README に記載された固定のツール数やカタログに頼らず、ライブレスポンスを確認してください。
制限: このエンドポイントでは、IP アドレスごとに 1 分あたり 30 リクエストまでです。上限を超えると、Retry-After を伴う HTTP 429 が返されます。
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 を削除すると、同じ呼び出しで、失敗した具体的なルール(例:PEPPOL-EN16931-F001、PEPPOL-EN16931-R003)とともに "verdict": "will_be_rejected" が返されます(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/— 当社独自の ドッグフーディングの例(オランダ語)です。受領した請求書の VAT 番号に対して、有料のcheck_vat_listを実行します。
エージェントスキル:pay-invoices-safely
skills/pay-invoices-safely/SKILL.md
は、仕入先への請求書を支払おうとしている、または仕入先の銀行口座を変更しようとしているエージェント向けの Agent Skill です。新しい IBAN ごとに check_payment_change を呼び出し、人による折り返し確認が行われるまで支払いを保留すること、preflight_payment で承認内容と支払い案を照合すること、check_peppol_ready で請求書を確認することをエージェントに教えます。必要な VAT/会社チェックでは、承認済みの接続がある場合に限り既存のツールを使用します。アクセス権がない場合は not_run と報告します。必須チェックが unknown または not_run の場合、ready の報告はできません。
このスキルは、仕入先の銀行口座が変更されるたび、請求書の IBAN が仕入先記録と異なるたび、および支払い処理のたび、という3つのトリガーを想定しています。
クリーンなフォルダーからインストールする
SKILLS_DIR には、ご利用の Agent-Skills 対応クライアントのドキュメントに記載されているスキルディレクトリを設定してください。このリポジトリでは、どのクライアントのパスも把握していないため、推測しないでください。そのうえで、git と Node 18+ がインストールされた環境で、POSIX シェル(Windows では Git Bash が使用できます)から次を実行します。公開リポジトリのコミット 9193a770320aa144e66e8630c830be33858f21ad(2026-09-28 時点の main の HEAD)に固定しています。新しいコミットを使う場合は、事前に内容を確認してください。
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 に含まれていることを確認し、価格に似たテキストがあれば拒否します。現在のチェッカーは、2 つの VAT スキルの正確なコスト行がライブの tools/list にも一致する場合に限り、狭い例外を適用します。それ以外の場所では、任意の価格や金銭に関する主張は認めません。コマンドはスキル本文に沿っており、別途固定されています。
クローン、コピー、そして独自のチェッカーによって、ファイルを取得でき、例が引き続き実行できることは確認できます。しかし、エージェントがスキルを読み込んだこと、スキルを使ってタスクを完了したこと、または再度使用したことは確認できません。
機械可読な参照先
- 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。