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.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
97%
Calidad de los nombres
93%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,078Tokens (definiciones de herramientas)
~4.9 KBTamaño de respuesta típico
Impacto significativo en la atención (3.19% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

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

Puntos de conexión remotos

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

Qué puede hacer

Inventario de herramientas

Herramientas (8)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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.

Esquema de entrada

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

Esquema de salida

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

Esquema de entrada

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

Esquema de salida

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

Esquema de entrada

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

Esquema de salida

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

Esquema de entrada

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

Esquema de salida

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

Esquema de entrada

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

Esquema de salida

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

Esquema de entrada

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

Esquema de salida

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

Esquema de entrada

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

Esquema de salida

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

Esquema de entrada

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

Esquema de salida

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

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada8 herramientas
verificadoversión no registrada19 herramientas