Jithox payment preflight: check an invoice payment before your AI agent pays

Call preflight_payment before an agent pays an invoice: approval, IBAN, bank change; signed, free.

使うべきか

品質と安全性

A
説明の品質
100%
スキーマの完全性
97%
命名の品質
93%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~4,078トークン数(ツール定義)
~4.9 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.19%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

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

リモートエンドポイント

https://jithox.com/api/mcpstreamable-http

できること

ツール一覧

ツール(8)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢kbo_company_search(vatNumber, countryCode)

Look up an EU company by VAT or enterprise number in the EU VIES register, Belgian KBO/BCE included: name, VAT id, address, status. 2 credits (EUR 0.02) per successful call; needs a bearer token.

入力スキーマ

{
  "type": "object",
  "properties": {
    "vatNumber": {
      "type": "string",
      "maxLength": 40,
      "description": "EU VAT number, with or without its country prefix — e.g. \"BE0123456789\", \"NL855876323B01\", \"DE811569869\" or the bare Belgian enterprise number \"0123456789\"."
    },
    "countryCode": {
      "default": "BE",
      "description": "ISO 3166-1 alpha-2 country code of the issuing EU member state (uppercase), e.g. BE, NL, DE, FR.",
      "type": "string"
    }
  },
  "required": [
    "vatNumber"
  ]
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object"
    },
    "billing": {
      "type": "object"
    }
  },
  "required": [
    "kind",
    "data",
    "billing"
  ]
}
🟢review_invoice(invoiceNumber, issueDate, dueDate, currency, buyerReference, ...)

Check one structured invoice before it is sent: Peppol fields, totals and both VAT numbers in EU VIES, with a fix per finding and the UBL XML. It never sends, and a VAT check VIES did not answer is `unknown`, never a pass. It does not look the receiver up: check_peppol_ready does. 8 credits (EUR 0.08) per review the VAT register answered; needs a bearer token.

入力スキーマ

{
  "type": "object",
  "properties": {
    "invoiceNumber": {
      "type": "string",
      "description": "Human-readable invoice number, e.g. \"INV-2026-0001\"."
    },
    "issueDate": {
      "type": "string",
      "format": "date"
    },
    "dueDate": {
      "type": "string",
      "format": "date"
    },
    "currency": {
      "description": "ISO 4217 currency code (uppercase).",
      "type": "string"
    },
    "buyerReference": {
      "description": "Buyer reference (BT-10), e.g. a PO or cost-centre code.",
      "type": "string"
    },
    "orderReference": {
      "description": "Purchase order reference (BT-13). Peppol requires this OR a buyer reference.",
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "supplier": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "countryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country code (uppercase), e.g. BE."
        },
        "vatId": {
          "description": "Legal / VAT registration id, e.g. \"BE0123456789\".",
          "type": "string"
        },
        "registrationName": {
          "type": "string"
        },
        "endpointId": {
          "description": "Peppol participant endpoint identifier, e.g. a GLN.",
          "type": "string"
        },
        "endpointScheme": {
          "description": "Endpoint scheme id (EAS code), e.g. \"0208\" for a Belgian enterprise number or \"0088\" for a GLN.",
          "type": "string",
          "maxLength": 10
        },
        "street": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "postalZone": {
          "type": "string",
          "maxLength": 20
        },
        "iban": {
          "description": "IBAN written on the invoice.",
          "type": "string"
        }
      },
      "required": [
        "name",
        "countryCode"
      ],
      "description": "Seller / accounting supplier party, including an optional IBAN for the payment check."
    },
    "customer": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "countryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country code (uppercase), e.g. BE."
        },
        "vatId": {
          "description": "Legal / VAT registration id, e.g. \"BE0123456789\".",
          "type": "string"
        },
        "registrationName": {
          "type": "string"
        },
        "endpointId": {
          "description": "Peppol participant endpoint identifier, e.g. a GLN.",
          "type": "string"
        },
        "endpointScheme": {
          "description": "Endpoint scheme id (EAS code), e.g. \"0208\" for a Belgian enterprise number or \"0088\" for a GLN.",
          "type": "string",
          "maxLength": 10
        },
        "street": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "postalZone": {
          "type": "string",
          "maxLength": 20
        },
        "email": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "countryCode"
      ],
      "description": "Buyer / accounting customer party, including an optional draft e-mail recipient."
    },
    "lines": {
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "quantity": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "unitPrice": {
            "type": "number",
            "minimum": 0,
            "description": "Price per unit, excluding VAT."
          },
          "vatPercent": {
            "description": "VAT rate as a percentage (0–100).",
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "unitCode": {
            "description": "UN/ECE Rec 20 unit code, e.g. \"HUR\".",
            "type": "string",
            "maxLength": 10
          },
          "taxCategory": {
            "description": "Override the derived UNCL5305 VAT category.",
            "type": "string",
            "enum": [
              "S",
              "Z",
              "E",
              "AE",
              "K",
              "G",
              "O",
              "L",
              "M"
            ]
          },
          "lineTotal": {
            "description": "Caller-stated line total excluding VAT, compared with quantity × unit price by this review.",
            "type": "number"
          },
          "lineNetAmount": {
            "description": "Caller-stated line total excluding VAT (BT-131), used by the shared Peppol arithmetic rules.",
            "type": "number"
          }
        },
        "required": [
          "description",
          "quantity",
          "unitPrice"
        ]
      }
    },
    "payment": {
      "description": "Payment instruction carried by the invoice, when it names an IBAN.",
      "type": "object",
      "properties": {
        "iban": {
          "description": "IBAN written on the invoice.",
          "type": "string"
        }
      }
    },
    "totalWithoutVat": {
      "description": "Caller-stated invoice total excluding VAT (BT-109), used by the arithmetic rule checks.",
      "type": "number"
    },
    "totalVat": {
      "description": "Caller-stated total VAT (BT-110), used by the arithmetic rule checks.",
      "type": "number"
    },
    "totalWithVat": {
      "description": "Caller-stated invoice total including VAT (BT-112), used by the arithmetic rule checks.",
      "type": "number"
    }
  },
  "required": [
    "invoiceNumber",
    "issueDate",
    "supplier",
    "customer",
    "lines"
  ]
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object"
    },
    "billing": {
      "type": "object"
    }
  },
  "required": [
    "kind",
    "data",
    "billing"
  ]
}
🟢verify_iban(iban, expectedCountry)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "iban": {
      "type": "string",
      "description": "The account number to check, as written — spaces and dashes are fine, e.g. \"BE68 5390 0754 7034\"."
    },
    "expectedCountry": {
      "description": "Optional ISO 3166-1 alpha-2 country of the party being paid.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    }
  },
  "required": [
    "iban"
  ]
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object"
    }
  },
  "required": [
    "kind",
    "data"
  ]
}
🟢check_peppol_ready(invoiceNumber, issueDate, currency, buyerReference, orderReference, ...)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "invoiceNumber": {
      "description": "The invoice number (BT-1).",
      "type": "string"
    },
    "issueDate": {
      "description": "The issue date (BT-2).",
      "type": "string",
      "maxLength": 40
    },
    "currency": {
      "description": "Three-letter currency code (BT-5), e.g. EUR.",
      "type": "string",
      "maxLength": 8
    },
    "buyerReference": {
      "description": "The reference the customer asked you to put on the invoice (BT-10). Peppol requires this OR an order reference.",
      "type": "string"
    },
    "orderReference": {
      "description": "The purchase order number (BT-13).",
      "type": "string"
    },
    "supplier": {
      "description": "You, the sender.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "countryCode": {
          "description": "ISO 3166-1 alpha-2 country code, e.g. BE.",
          "type": "string",
          "maxLength": 2
        },
        "endpointId": {
          "description": "The party's Peppol address — the identifier the network delivers to, e.g. a Belgian enterprise number.",
          "type": "string"
        },
        "endpointScheme": {
          "description": "The four-digit EAS code the address is stated under, e.g. \"0208\" for a Belgian enterprise number.",
          "type": "string",
          "maxLength": 10
        }
      }
    },
    "customer": {
      "description": "The customer, the receiver.",
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "countryCode": {
          "description": "ISO 3166-1 alpha-2 country code, e.g. BE.",
          "type": "string",
          "maxLength": 2
        },
        "endpointId": {
          "description": "The party's Peppol address — the identifier the network delivers to, e.g. a Belgian enterprise number.",
          "type": "string"
        },
        "endpointScheme": {
          "description": "The four-digit EAS code the address is stated under, e.g. \"0208\" for a Belgian enterprise number.",
          "type": "string",
          "maxLength": 10
        }
      }
    },
    "lines": {
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "quantity": {
            "type": "number"
          },
          "unitPrice": {
            "type": "number"
          },
          "vatPercent": {
            "description": "The VAT rate on this line, as a percentage, e.g. 21.",
            "type": "number"
          },
          "lineNetAmount": {
            "description": "The line total excluding VAT, when you already computed it.",
            "type": "number"
          }
        }
      }
    },
    "documentAllowances": {
      "description": "Discounts on the WHOLE invoice, not on one line (BG-20).",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "amount": {
            "description": "The amount, excluding VAT (BT-92 for an allowance, BT-99 for a charge).",
            "type": "number"
          },
          "vatPercent": {
            "description": "The VAT rate it is taxed at, e.g. 21 (BT-96 / BT-103).",
            "type": "number"
          },
          "reason": {
            "description": "Why, e.g. \"Discount\" or \"Freight\".",
            "type": "string"
          }
        }
      }
    },
    "documentCharges": {
      "description": "Charges on the WHOLE invoice, e.g. freight (BG-21).",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "amount": {
            "description": "The amount, excluding VAT (BT-92 for an allowance, BT-99 for a charge).",
            "type": "number"
          },
          "vatPercent": {
            "description": "The VAT rate it is taxed at, e.g. 21 (BT-96 / BT-103).",
            "type": "number"
          },
          "reason": {
            "description": "Why, e.g. \"Discount\" or \"Freight\".",
            "type": "string"
          }
        }
      }
    },
    "totalWithoutVat": {
      "description": "Invoice total excluding VAT (BT-109).",
      "type": "number"
    },
    "totalVat": {
      "description": "Total VAT (BT-110).",
      "type": "number"
    },
    "totalWithVat": {
      "description": "Invoice total including VAT (BT-112).",
      "type": "number"
    }
  }
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object"
    }
  },
  "required": [
    "kind",
    "data"
  ]
}
🟢lookup_peppol_participant(identifier, scheme)

Ask the live Peppol registers whether a third party can receive e-invoices, which document types, and who to call when a send fails. Never a promise that an invoice arrives. Free, no token.

入力スキーマ

{
  "type": "object",
  "properties": {
    "identifier": {
      "type": "string",
      "description": "The customer's enterprise or VAT number, as written on the invoice — \"BE 0403.170.701\", \"0403170701\" and \"BE0403170701\" are all accepted."
    },
    "scheme": {
      "description": "The four-digit Peppol scheme the number is registered under, when you know it: \"0208\" for a Belgian enterprise number (the mandatory primary scheme for Belgian businesses), \"9925\" for a Belgian VAT number, \"0192\" for a Norwegian organisation number.",
      "type": "string",
      "maxLength": 10
    }
  },
  "required": [
    "identifier"
  ]
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object"
    }
  },
  "required": [
    "kind",
    "data"
  ]
}
🟢check_payment_change(newIban, ibanOnFile, supplierCountry)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "newIban": {
      "type": "string",
      "description": "The account number in the change request, as written — spaces and dashes are fine, e.g. \"DE89 3704 0044 0532 0130 00\"."
    },
    "ibanOnFile": {
      "description": "The account currently on the vendor record.",
      "type": "string"
    },
    "supplierCountry": {
      "description": "ISO 3166-1 alpha-2 country where the supplier is established, e.g. BE.",
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "pattern": "^[A-Za-z]{2}$"
    }
  },
  "required": [
    "newIban"
  ]
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object"
    },
    "evidence": {
      "description": "Signed decision evidence, present when a signing key is configured.",
      "type": "object"
    }
  },
  "required": [
    "kind",
    "data"
  ]
}
🟢preflight_payment(rail, approved, mandate, instructionSource, checks, ...)

Call once before you move money for a person: compares what they approved (payee, amount, currency) with what is about to be paid and runs the rail's checks (invoice: IBAN, account change). Returns stop, review_required or no_blockers_found with every check and signed evidence. Never pays; a check that did not run is never a pass. Free, no token.

入力スキーマ

{
  "type": "object",
  "properties": {
    "rail": {
      "type": "string",
      "enum": [
        "invoice_bank",
        "x402",
        "card_or_giftcard",
        "crypto_bridge"
      ],
      "description": "Required: approved.amount and payment.amount/currency (not x402); invoice_bank also approved.payee.name, payment.iban/payeeName; card_or_giftcard approved.payee.merchant, payment.merchant/instrument; crypto_bridge approved.payee.merchant, payment.provider/merchant; x402 approved.amountAtomic/asset/network/payee.payTo, payment.challenge/resourceUrl."
    },
    "approved": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string",
          "pattern": "^\\d{1,18}(\\.\\d{1,18})?$"
        },
        "currency": {
          "type": "string",
          "pattern": "^[A-Za-z]{3,5}$"
        },
        "payee": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "iban": {
              "type": "string"
            },
            "payTo": {
              "type": "string"
            },
            "merchant": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "purpose": {
          "type": "string"
        },
        "amountAtomic": {
          "type": "string",
          "pattern": "^\\d{1,78}$"
        },
        "asset": {
          "type": "string"
        },
        "network": {
          "type": "string"
        }
      },
      "required": [
        "currency",
        "payee"
      ],
      "additionalProperties": false
    },
    "mandate": {
      "type": "object",
      "properties": {
        "maxAmount": {
          "type": "string",
          "pattern": "^\\d{1,18}(\\.\\d{1,18})?$"
        },
        "currency": {
          "type": "string",
          "pattern": "^[A-Za-z]{3,5}$"
        },
        "validUntil": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,9})?)?(Z|[+-]\\d{2}:\\d{2})$"
        },
        "maxAmountAtomic": {
          "type": "string",
          "pattern": "^\\d{1,78}$"
        }
      },
      "additionalProperties": false
    },
    "instructionSource": {
      "type": "string",
      "enum": [
        "human",
        "ingested_content",
        "third_party"
      ]
    },
    "checks": {
      "description": "Opt-in registers, run only on a connected door.",
      "maxItems": 2,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "vat_register",
          "sanctions"
        ]
      }
    },
    "payment": {
      "type": "object",
      "properties": {
        "iban": {
          "type": "string"
        },
        "amount": {
          "type": "string",
          "pattern": "^\\d{1,18}(\\.\\d{1,18})?$"
        },
        "currency": {
          "type": "string",
          "pattern": "^[A-Za-z]{3,5}$"
        },
        "payeeName": {
          "type": "string"
        },
        "supplierCountry": {
          "description": "ISO 3166-1 alpha-2, e.g. BE.",
          "type": "string"
        },
        "peppolId": {
          "description": "e.g. 0208:0403170701",
          "type": "string"
        },
        "supplierVatId": {
          "type": "string",
          "maxLength": 32
        },
        "challenge": {
          "type": "object"
        },
        "resourceUrl": {
          "type": "string"
        },
        "acceptIndex": {
          "type": "integer",
          "minimum": 0,
          "maximum": 63
        },
        "payer": {
          "type": "string"
        },
        "merchant": {
          "type": "string"
        },
        "instrument": {
          "type": "string",
          "enum": [
            "card",
            "giftcard"
          ]
        },
        "provider": {
          "type": "string"
        },
        "payTo": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ibanOnFile": {
      "description": "The account on the vendor record.",
      "type": "string"
    },
    "invoice": {
      "description": "The invoice as review_invoice takes it.",
      "type": "object"
    }
  },
  "required": [
    "rail",
    "approved",
    "payment"
  ],
  "additionalProperties": false
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object"
    },
    "evidence": {
      "description": "Signed decision evidence, present when a signing key is configured.",
      "type": "object"
    }
  },
  "required": [
    "kind",
    "data"
  ]
}
🟢check_vat_list(rows, requesterVatId)

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.

入力スキーマ

{
  "type": "object",
  "properties": {
    "rows": {
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "reference": {
            "description": "Your own label for the row — a customer number, a name. It is echoed back, never interpreted.",
            "type": "string"
          },
          "vatId": {
            "type": "string",
            "description": "The VAT number as written, WITH its two-letter country prefix, e.g. \"BE0400378485\" or \"NL 8558.76.323.B01\"."
          }
        },
        "required": [
          "vatId"
        ]
      },
      "description": "The list: 1 to 20 rows per call."
    },
    "requesterVatId": {
      "description": "Your OWN EU VAT number with country prefix (e.g. BE0403170701). Never stored.",
      "type": "string",
      "maxLength": 20
    }
  },
  "required": [
    "rows"
  ]
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string"
    },
    "data": {
      "type": "object"
    },
    "billing": {
      "type": "object"
    }
  },
  "required": [
    "kind",
    "data",
    "billing"
  ]
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 8 件
検証済みバージョンは記録されていませんツール 19 件