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.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
97%
Qualität der Benennung
93%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,078Tokens (Tool-Definitionen)
~4.9 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.19% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

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

Remote-Endpunkte

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

Was es kann

Tool-Inventar

Tools (8)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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.

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

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

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

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

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

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

Eingabe-Schema

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

Ausgabe-Schema

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

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

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

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

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

Eingabe-Schema

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

Ausgabe-Schema

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

Eingabe-Schema

{
  "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"
  ]
}

Ausgabe-Schema

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

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet8 Tools
verifiziertVersion nicht aufgezeichnet19 Tools