Pain001 Mcp

io.github.sebastienrousseau由 GitHub 账号 sebastienrousseau 发布v0.0.81更新于 Nov 8, 2026

ISO 20022 payment files for agents: generate, validate, and convert pain.001, pain.008, MT101.

已验证STDIO仅桌面金融开发者工具

概览

AI 生成的概览

以 MCP 工具形式生成、校验和转换 ISO 20022 支付文件(pain.001、pain.008、MT101),供 AI 助手使用。

可以做什么
  • 校验并生成 ISO 20022 支付 XML 文件
  • 处理支付标识符并在格式之间迁移
  • 解析银行报告并访问支付数据语料库
  • 提供仅供复核的记录修正建议,拒绝猜测财务字段
  • 列出并投影尚未发布的 face 工具
适用场景
适合在支付文件开发或测试中,让助手起草、检查或转换 ISO 20022 贷记转账与直接借记文件,或查看银行报告数据。
运行要求
本地 Python 包 pain001-mcp,需要 Python 3.11 或更高版本;默认使用 stdio 传输,可通过命令行选项启用可选的 HTTP/SSE 传输。未声明账号、密钥或环境变量。
安装前请注意
它不是银行、清算引擎或自动付款审批工具,使用前须复核所有生成结果。工具可能读取被授权的输入路径,修正建议不会改动 IBAN、BIC、金额或币种。若开放 HTTP 监听须做好防护,并避免在日志中出现真实密钥。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Pain001 Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[pain001-mcp logo]

pain001-mcp

Expose pain001 validation, generation and inspection as MCP tools.

[Build] [Registry] [Docs] [OpenSSF Scorecard] [License: Apache-2.0 OR MIT] [Python 3.11 or newer]

[pain001-mcp Demo]


Contents

Getting started

The pain001-mcp ecosystem

Library reference

Operational


Install

As a Python library

bash
python -m pip install pain001-mcp

Published packages and development branches are distinct. Test unreleased changes on this companion's feat/v<next-version> branch against the matching core branch. No PyPI release or version bump is part of this work.


Requirements

Python 3.11 or newer. CI tests 3.11–3.14 on Linux. See toolchain policy; no distro-system-Python claim is made.


Quick Start

bash
pain001-mcp --helppain001-mcp

The second command starts the stdio MCP server and waits for a client. Configure your client to launch pain001-mcp. Use generated help for optional HTTP/SSE transports; secure network access before exposing any listener.


The pain001-mcp ecosystem

This independently installed companion delegates payment behavior to core. Coordinated versioning does not imply branch changes have been released.

ComponentPurposeUse case
pain001Generation and validationShared contracts and XML engine

Capabilities at a glance

AreaCapabilityStatus
IntegrationPayment validation and generation toolsTest-gated; new branch work is unreleased

Ecosystem comparison

This matrix describes the repository's scope, not an independently benchmarked comparison with competitors.

ProjectGenerate payment XMLReal settlementSynthetic bank replies
pain001-mcpDelegates to coreNoNot a bank service

See docs/COMPARISON.md for the evidence and complete matrix.


Benchmarks

CI smoke-runs benchmarks. No hardware-independent throughput or latency promise is made; use the generated run report for measurements.

ScenarioResultEnvironment
Adapter operationsRun-specificPython, hardware and dependency versions recorded per run

See docs/BENCHMARKS.md for methodology and full results.


Features

The authoritative tool catalogue is generated from the server. It covers validation, identifiers, generation, migration, bank-report parsing, corpus access, review-only record fixes (suggest_record_fix) and the unreleased faces (list_faces, project_face). Suggestions require review; financial fields are refused, never guessed. Test unreleased tools with the matching core feature branch. In-tree core MCP is a separate smaller surface.


Configuration

Run pain001-mcp --help for transport, host and port options. Stdio is default. See the tool catalogue for request shapes rather than a copied tool count.


Examples

Run the self-checking scripts under examples/. Tests cover valid and malformed inputs and integration with the core contract.


When not to use pain001-mcp

Not a bank, settlement engine or autonomous payment approver. Review outputs before use. Transport support is not bank certification.


Development

bash
poetry installpoetry run make checkpoetry run make securitypoetry run python scripts/tool_catalogue.py --checkpoetry run python scripts/render_readme.py --check

Coverage is gated at 100% line and branch. See CONTRIBUTING.md and DEVELOPMENT.md. README is generated from the canonical layout and docs/readme-values.json; CI rejects drift.


Security

Treat requests as untrusted. Protect HTTP listeners and avoid real secrets in logs. Tools may read authorized input paths. Corrections never patch IBANs, BICs, amounts or currencies.

Report vulnerabilities according to SECURITY.md.


Documentation

What is pain.001? · User manual · API reference · Developer guide · Family map


Stability guarantees

Versions advance in coordinated 0.0.1 steps with core. The maintainer opens releases; this branch does not bump versions. Contract and output changes need compatibility review. No stronger platform or stability guarantee is implied.


MCP Registry

mcp-name: io.github.sebastienrousseau/pain001-mcp


License

Dual-licensed under Apache-2.0 OR MIT, at your option. See LICENSE. Dependencies retain their own licences.

来源:README.md,提交 31889fa

工具

29

list_message_types

List pain message types

List every supported ISO 20022 pain message type and its human name. Use this first, before any generation or validation call, to discover the exact ``message_type`` strings this server accepts. Do not use it to fetch a type's fields or schema — call ``get_required_fields`` or ``get_input_schema`` for that. Returns a list of ``{"message_type": ..., "name": ...}`` dictionaries, one per supported message type (e.g. ``pain.001.001.09``).

无需输入参数。

get_required_fields

Get required fields

List only the required input field names for a pain message type. Use this for a quick checklist of the mandatory columns before building records. When you need full type/format constraints (not just which fields are required), call ``get_input_schema`` instead. Args: message_type: A supported ISO 20022 pain message type.

输入参数message_type必填

get_input_schema

Get input JSON Schema

Return the full JSON Schema for a message type's flat input record. Use this to learn every field, its type, and its constraints before assembling records, or to drive a form/UI. For just the required-field names use ``get_required_fields``; to actually check records against this schema use ``validate_records``. Args: message_type: A supported ISO 20022 pain message type.

输入参数message_type必填

validate_records

Validate records against schema

Validate flat records against a message type's input JSON Schema. Use this before ``generate_message`` to catch structural/type errors per record and get a row-by-row error report. Like the pain001 CLI, it also checks every IBAN and BIC (unless ``identifier_checks`` is false) and refuses rows that would not share one payment information block. For payment-scheme rulebook checks (SEPA field lengths, charset, etc.) also run ``validate_payment_scheme``. Returns a report ``{"valid": bool, "total": int, "valid_count": int, "errors": [...]}``, or ``{"error": ...}`` for a mixed batch. Args: message_type: A supported ISO 20022 pain message type. records: One or more flat payment records to validate. identifier_checks: If false, skip the IBAN and BIC checks.

输入参数records必填message_type必填identifier_checks

suggest_record_fix

Suggest review-only record fixes

Suggest deterministic, review-only fixes to non-financial fields. Returns patches or a cannot_autofix reason. Never changes IBANs, BICs, accounts, amounts or currencies, even for whitespace. Review every candidate and validate the full record before generating a payment. Args: record: A flat payment record, left unchanged. validation_error: Finding with field (or path) and rule keys. message_type: Supported schema supplying trusted field bounds.

输入参数record必填message_typevalidation_error必填

validate_identifier

Validate IBAN or BIC

Validate a single financial identifier (IBAN or BIC). Use this for a one-off identifier check with a clear pass/fail and reason. To validate identifiers embedded across a whole batch, prefer ``validate_records`` / ``validate_payment_scheme`` instead of calling this per field. Returns ``{"kind": str, "value": str, "valid": bool, "error": str}`` (the ``error`` key is present only when ``valid`` is ``False``). Args: kind: One of ``"iban"`` or ``"bic"`` (case-insensitive). value: The identifier value to check.

输入参数kind必填value必填

generate_message

Generate pain XML from records

Generate a validated ISO 20022 pain XML message from in-memory records. This is the primary generation tool: pass records you already hold in memory. Use ``generate_message_from_file`` when the data lives in a CSV on disk, and ``generate_message_async`` for very large batches you want to run off the event loop. The result is XSD-validated before return; no file is written. Records are normalized before rendering: 'amount'/'currency' aliases, JSON booleans, and bare 'YYYY-MM-DD' dates are accepted, and nb_of_txs/ctrl_sum are computed from the records. On failure the ``{"error": ...}`` payload lists every missing or invalid field at once. Every IBAN (mod-97) and BIC (ISO 9362) is checked first, as the pain001 CLI checks it, unless ``identifier_checks`` is false; values are never coerced. Returns the validated XML document as a string, or a JSON-encoded ``{"error": ...}`` payload if generation fails. Args: message_type: A supported ISO 20022 pain message type. records: One or more flat payment records. identifier_checks: If false, skip the IBAN and BIC checks.

输入参数records必填message_type必填identifier_checks

list_supported_formats

List supported input formats

List the on-disk data formats the pain001 loader can read. Use this to tell a user which file types they may supply to ``generate_message_from_file``. This lists *data-source* formats (CSV, SQLite, …); for the list of ISO 20022 *message* types call ``list_message_types`` instead. Returns a list of ``{"id", "name", "extension"}`` dictionaries covering CSV, SQLite, JSON, JSONL, and Parquet (the last requires the ``pain001[parquet]`` extra).

无需输入参数。

generate_message_async

Generate pain XML (async, large batches)

Generate validated pain XML off the event loop, for large batches. Behaves exactly like ``generate_message`` but runs the synchronous renderer in a worker thread so an agent can interleave a long generation with other tool calls. Use ``generate_message`` for small or interactive batches; use this only when the record count is large enough that blocking would matter. Delegates to :func:`pain001.async_adapter.generate_xml_string_async`. Returns the validated XML, or a JSON-encoded ``{"error": ...}`` payload. Args: message_type: A supported ISO 20022 pain message type. records: One or more flat payment records. identifier_checks: If false, skip the IBAN and BIC checks.

输入参数records必填message_type必填identifier_checks

generate_message_from_file

Generate pain XML from a CSV file

Generate validated pain XML from a CSV file on the local disk. Use this when the records live in a CSV file rather than in memory; it reads ``data_file_path`` from the local filesystem, then delegates to ``generate_message``. If you already have the records as dicts, call ``generate_message`` directly. Only CSV is supported today (JSON / JSONL / SQLite / Parquet are planned for a follow-up release). Loads ``data_file_path`` via :func:`pain001.csv.load_csv_data.load_csv_data` so the same path-safety guards apply as in the core library. Args: message_type: A supported ISO 20022 pain message type. data_file_path: Path to a CSV file with one record per row. Returns: The validated XML, or a JSON-encoded ``{"error": ...}`` payload.

输入参数message_type必填data_file_path必填

parse_camt053

Parse camt.053 statement file

Parse a camt.053 bank-statement XML file on disk into structured data. Use this to read a bank's account statement (the reply that confirms settlement) into a header + entry list. Reads ``xml_file_path`` from the local filesystem. For the payment-status reply (accepted/rejected per transaction) use ``parse_pain002`` instead; to validate a camt.053 string you already hold, this is not it — this tool needs a file path. Wraps :func:`pain001.parse_camt053_statement`. When ``xsd_file_path`` is provided, the document is first validated against that XSD; on a schema or parse error the tool returns ``{"error": ...}`` rather than raising. Args: xml_file_path: Filesystem path to the camt.053 XML statement. xsd_file_path: Optional path to a camt.053 XSD for upfront validation. Returns: The first statement's header and entries, every statement under ``statements``, or an ``{"error": ...}`` payload on failure.

输入参数xml_file_path必填xsd_file_path

parse_pain002

Parse pain.002 status report file

Parse a pain.002 payment-status report file on disk into structured data. Use this to read the bank's acknowledgement of a submitted pain.001 — the per-transaction accepted/rejected status and reason codes. Reads ``xml_file_path`` from the local filesystem. For the account statement that later confirms booked entries, use ``parse_camt053`` instead. Wraps :func:`pain001.parse_pain002_report`. When ``xsd_file_path`` is provided, the document is first validated against that XSD; on a schema or parse error the tool returns ``{"error": ...}`` rather than raising. Args: xml_file_path: Filesystem path to the pain.002 XML report. xsd_file_path: Optional path to a pain.002 XSD for upfront validation. Returns: A dict with the group header and transaction statuses, or an ``{"error": ...}`` payload on failure.

输入参数xml_file_path必填xsd_file_path

inspect_template

Inspect CSV template columns

Return the CSV column headers the message type's bundled template uses. Use this to see the exact column order for hand-building a CSV before ``generate_message_from_file``. This returns column *names* from the bundled sample; for the typed JSON contract (types, required flags) use ``get_input_schema``. Mirrors the in-tree ``pain001.mcp.server.inspect_template`` tool so an agent can introspect the column layout before assembling rows. Args: message_type: A supported ISO 20022 pain message type. Returns: ``{"message_type": str, "columns": list[str]}`` or ``{"error": ...}`` if the type is unsupported or no template ships.

输入参数message_type必填

validate_payment_scheme

Validate against scheme rulebook

Validate records against a payment-scheme rulebook (e.g. SEPA). Use this after ``validate_records`` to enforce scheme-specific business rules (SEPA field lengths, allowed characters, currency/BIC constraints) that JSON-Schema validation alone does not cover. ``validate_records`` checks structural shape; this checks rulebook compliance for one profile. Delegates to :func:`pain001.validate_scheme`. The ``profile`` parameter lists every profile the installed pain001 ships. Args: records: Payment records as a list of flat dicts. profile: The scheme profile name. Returns: ``{"profile", "is_valid", "violations": [...]}`` with structured ``violations`` (each with ``rule``, ``severity``, ``field``, ``message``, ``remediation`` keys), or ``{"error": ...}`` for an unknown profile.

输入参数profilerecords必填

list_scheme_profiles

List scheme profiles

List every payment-scheme rulebook profile the core ships. Use this to choose the ``profile`` for ``validate_payment_scheme`` (or the ``scheme`` of ``simulate_payment_batch`` and ``stage_payment_batch``) before calling it. Each entry gives the profile name, a one-line description, the prefix of the rule ids a rail profile reports (null for the SEPA, cross-border, duplicate and purpose-mandate profiles), and the public documents it was built from. Everything comes from the installed pain001; nothing is restated here. Returns: ``{"count": int, "profiles": [{"name", "description", "rule_prefix", "sources"}, ...]}`` in name order.

无需输入参数。

simulate_payment_batch

Simulate payment batch

Simulate and pre-flight a payment batch before XML generation. Performs comprehensive pre-flight verification without generating XML or staging files: 1. Validates records against the message type's JSON Schema. 2. Validates records against an optional payment-scheme rulebook. 3. Computes control sums grouped by currency. 4. Calculates unique debtor and creditor account counts. 5. Detects intra-batch duplicate transactions (same debtor, creditor, amount, currency, and execution date). Returns a structured verdict with totals, sums by currency, duplicate findings, and schema/scheme errors. Args: message_type: A supported ISO 20022 pain message type. records: One or more flat payment records to simulate. scheme: Optional payment scheme profile to validate against.

输入参数schemerecords必填message_type必填

migrate_records

Migrate records between versions

Migrate flat payment records between two pain.001 schema versions. Use this to upgrade/downgrade records when your bank requires a different pain.001 version than your source data uses (e.g. move ``.03`` rows to ``.09``); it reports which fields were renamed, derived, or dropped. This transforms records only — run ``validate_records`` afterwards, then ``generate_message`` to emit XML. Wraps :class:`pain001.migration.VersionMapper`. Returns the migrated rows plus a summary of which fields were renamed, derived, or dropped; ``{"error": ...}`` if either version is unsupported. Args: records: Records in the ``from_version`` shape. from_version: Source pain.001 version (e.g. ``"pain.001.001.03"``). to_version: Target pain.001 version (e.g. ``"pain.001.001.09"``). Returns: ``{"records": [...], "migrated": int, "from": str, "to": str}`` or ``{"error": ...}``.

输入参数records必填to_version必填from_version必填

validate_xml_against_schema

Validate XML string against XSD

Validate a raw pain.001 / pain.008 XML string against its official XSD. Use this to check XML you already have as a string (e.g. received from another system) without touching the filesystem. To validate records *before* they become XML, use ``validate_records``; to parse a statement or status-report file, use ``parse_camt053`` / ``parse_pain002``. Wraps :func:`pain001.xml.validate_via_xsd.validate_xml_string_via_xsd`. Args: xml_content: The XML document as a string. message_type: A supported ISO 20022 pain message type. Returns: ``{"valid": bool, "message_type": str, "error": str?}`` - ``error`` is present only when ``valid`` is ``False``.

输入参数xml_content必填message_type必填

sanitize_to_iso20022_charset

Sanitise text to ISO 20022 charset

Sanitise one free-text field to a SWIFT / ISO 20022 character set. Use this on a single free-text value (name, remittance info) to transliterate accents and drop unsupported symbols before placing it in a record, and to see whether the value changed. Operates on one string; to check a whole batch's rulebook compliance use ``validate_payment_scheme``. Two character sets are supported via ``charset``: * ``"SWIFT_X"`` (default, backward-compatible) - the basic set used in most ISO 20022 / pain.001 fields. Delegates to :func:`pain001.sanitize_to_charset`. * ``"SWIFT_Z"`` - the SWIFT extended set, a strict superset of X that also permits ``= ! " % & * < > ; { @ # _`` (used in narrative / envelope fields). It does not permit ``|`` or ``}``. In both cases accents are transliterated (``é`` -> ``e``) and any remaining out-of-set character is replaced with a space. The result includes flags for whether the original was already valid and whether it changed - useful for surfacing the change to the user before writing it back to a record. Args: value: The text to sanitise. charset: ``"SWIFT_X"`` (default) or ``"SWIFT_Z"``. Returns: ``{"value": str, "sanitised": str, "was_valid": bool, "changed": bool}``.

输入参数value必填charset

convert_mt101

Convert MT101 to pain.001 records

Convert a legacy SWIFT MT101 message into pain.001-ready records. Use this to bridge the Nov-2025+ SWIFT MT→MX migration: parse an MT101 (*Request for Transfer*) into the flat records the other tools consume — feed the result straight to ``validate_records`` / ``validate_payment_scheme`` and then ``generate_message`` to emit pain.001.001.09 XML. An MT101 can request many transfers (repeating sequence B), so this returns *one record per transaction*. Operates on the supplied text only; no file is read or written. Wraps :func:`pain001_loader_mt101.loader.parse_mt101`. Sequence-A ordering-customer / account-servicing fields apply to every transaction unless a sequence-B block overrides them; fields the MT101 does not carry are synthesised to schema defaults (``payment_method`` ``"TRF"``, ``service_level_code`` ``"SEPA"``, etc.). Args: mt101_text: The MT101 payload as a string. Returns: A list of flat pain.001 records (one per transaction), or an ``{"error": ...}`` dict if the MT101 is missing a mandatory field (``:20:``, ``:30:``, or per transaction ``:21:`` / ``:32B:`` / a named beneficiary) or is otherwise malformed.

输入参数mt101_text必填

list_corpus_files

List example corpus files

List the example files pain001 ships: market scenarios and coverage sets. Use this to discover what ready-made, validated ISO 20022 files exist before calling ``get_corpus_file`` or ``get_corpus_provenance``. Market files are realistic payments per country and rail (``scenario_id`` like ``gb.chaps.property-purchase``); a ``variant`` names the bank overlay a file was built with. Coverage files exercise every element and choice branch of one message type and carry no scenario. Delegates to :func:`pain001.corpus.list_files`. Args: kind: ``market``, ``coverage`` or ``None`` for both. country: Optional two-letter country filter for market files. version: Optional message-type filter. Returns: ``{"count", "files": [{"kind", "scenario_id", "version", "country", "family", "variant", "file"}, ...]}``, or ``{"error": ...}`` when the installed pain001 has no corpus.

输入参数kindcountryversion

get_corpus_file

Get example corpus file

Return the XML of one validated example file from the market corpus. Use this to show a model, a tester or a mapping exercise what a correct file for a given country and rail looks like in a given edition. The text is exactly what pain001 ships; it passed the XSD, the ISO MDR rules, the rail profile and the overlay when it was built. Delegates to :func:`pain001.corpus.get_file`. Args: scenario_id: The scenario. version: The message type. variant: The overlay id of a bank variant, else ``None``. Returns: ``{"scenario_id", "version", "variant", "xml"}``, or ``{"error": ...}`` when there is no such file or no corpus.

输入参数variantversion必填scenario_id必填

get_corpus_provenance

Get example corpus provenance

Return the provenance sidecar of one example file. Use this to know how far to trust a file: the sources it was derived from, the confidence of the evidence (``verified``, ``derived`` or ``assumed``), the validation ladder result per rung, what the builder renamed or dropped to fit the edition, and the file's SHA-256. Delegates to :func:`pain001.corpus.provenance`. Args: scenario_id: The scenario. version: The message type. variant: The overlay id of a bank variant, else ``None``. Returns: The parsed sidecar as a dict, or ``{"error": ...}`` when there is no such file or no corpus.

输入参数variantversion必填scenario_id必填

get_corpus_coverage

Get schema coverage report

Return the schema coverage verdict of one message type's coverage set. Use this to check that the shipped coverage files reach every element path and choice branch of an edition's XSD before relying on them to smoke a parser or a mapping. Delegates to :func:`pain001.corpus.coverage_report`. Args: version: The message type. Returns: The ``coverage.json`` content (path and branch counts and percentages, completeness, missing and exempt lists), or ``{"error": ...}`` when the edition has no set or there is no corpus.

输入参数version必填

list_faces

List faces

List the faces: the standards a pain.001 document can be projected into. Use this before ``project_face`` to pick a target and to learn which bindings it accepts. A binding is a value the payment message does not carry, such as the UK Open Banking ``ConsentId`` agreed with the bank; any key a face does not list is refused. Delegates to :func:`pain001.faces.list_supported_faces`. Returns: ``{"count", "faces": [{"name", "description", "bindings"}, ...]}``, or ``{"error": ...}`` when the installed pain001 has no faces.

无需输入参数。

project_face

Project pain.001 into a face

Project a pain.001 document into another standard's JSON shape. Use this to turn a payment file into the request body a UK Open Banking or Berlin Group API expects, or into ISO 20022 element names, and to see exactly what the target cannot carry: the loss report lists every source element left out, by indexed path. A face never invents a value: when the target requires an element the document lacks, the answer is an ``{"error": ...}`` naming it. To check the document itself first, use ``validate_xml_against_schema``. Delegates to :func:`pain001.faces.project_face_text`. Args: xml_content: The pain.001 document as XML text. face: The target face. version: The edition, or ``None`` to detect it. bindings: Side inputs the face accepts, or ``None``. Returns: ``{"face", "version", "payload", "loss_report"}``, or ``{"error": ...}`` when the face refuses the document or a binding, or the installed pain001 has no faces.

输入参数face必填versionbindingsxml_content必填

stage_payment_batch

Stage payment batch for simulation and approval

Stage a payment batch for simulation and a confirmed commit. Creates an in-memory staged payment order with zero fund movement and a 1-hour expiration window. Computes: 1. Schema validation against the message type's JSON Schema. 2. Optional scheme compliance verification (SEPA, BACS, etc.). 3. Multi-currency control sums and fee estimation. 4. Multi-factor risk scoring (detecting duplicates, high transaction amounts, and generic remittance narratives). 5. In-memory XML compilation and SHA-256 fingerprinting. 6. A confirmation token that commit_payment_batch requires. Args: message_type: A supported ISO 20022 pain message type. records: One or more flat payment records to stage. scheme: Optional payment scheme profile to validate against. Returns: StagedBatchResult with staging metadata, risk assessment, fingerprint, and confirmation token, or {"error": ...}.

输入参数schemerecords必填message_type必填

simulate_clearing

Simulate clearing network execution

Simulate settlement and clearing network execution for a staged batch. Evaluates network-specific rulebooks and clearing constraints: - EPC-SEPA: EUR currency mandate, SEPA-zone IBAN prefixes, SLEV charge bearer. - FedNow: USD instant gross settlement eligibility. - US-ACH: USD next-day clearing cycle routing. - SWIFT-MX: Cross-border correspondent banking BIC routing. - CHAPS: Same-day RTGS high-value GBP clearing. - BACS: Three-day GBP direct credit clearing. Args: stage_id: Staging identifier from stage_payment_batch. clearing_system: Clearing rail profile to simulate. Returns: SimulateClearingResult with verdict (ACCEPTED / REJECTED), detailed checks, and estimated settlement window, or {"error": ...}.

输入参数stage_id必填clearing_system

commit_payment_batch

Commit staged payment batch

Commit a staged payment batch with its confirmation token. Verifies the stage ID and validates the secondary confirmation token using constant-time cryptographic comparison (preventing timing attacks). Transitions the order status from 'staged' to 'committed'. Optionally writes a new ``.xml`` file inside the output directory (see ``_output.py``). The token guards against an accidental commit only. Args: stage_id: Staging identifier from stage_payment_batch. confirmation_token: Secondary secret confirmation token. output_file_path: Optional new XML file in the output directory. Returns: CommitPaymentBatchResult with commit timestamp and fingerprint, or {"error": ...}.

输入参数stage_id必填output_file_pathconfirmation_token必填

版本历史

6
  1. v0.0.78Nov 7, 2026
  2. v0.0.75Oct 29, 2026
  3. v0.0.74Oct 23, 2026
  4. v0.0.73Oct 4, 2026
  5. v0.0.72Sep 29, 2026
  6. v0.0.70Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分