io.github.sebastienrousseau/reconcile-mcp
PYPI · RECONCILE-MCP
Reconcile camt.053 statements vs expected pain.001 payments with explainable matching.
Available components
Last scanned (42 minutes ago)
Scores higher than 82% of PyPI servers
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs poetry.core.masonry.api at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 32 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to sebastienrousseau/reconcile-mcp). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0 OR MIT).Pass
- Actively maintained (last published 31 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability77
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2122 tokens (~192/item across 11 items; 10 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- 1 Nov 26 +1
- Stability: 0.97 → pass security
- 31 Oct 26 −1
- Stability: pass → 0.97 functional
- 21 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 20 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 19 Oct 26 +1
- Stability: 0.97 → pass security
- 18 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 17 Oct 26 −14
- Malware scan: pass → unverified ▼ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed pypi/reconcile-mcp@0.0.7
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | sebastienrousseau/reconcile-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sebastienrousseau/reconcile-mcp/.github/workflows/release.yml@refs/tags/v0.0.7 |
| Rekor log index | 3078538832 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:035edc1bb73d65a9e4c970fb762493e82176d4aa7860f010b337f83be891a476 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | poetry.core.masonry.api |
Background: Why install scripts are a supply-chain risk →
Dependencies 32 packages
| Packages resolved | 32 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
explain_match ~210
Explain the match score between one expected and one observed record. Purpose: Scores a single transaction pair across reference, amount, date, and name signals, returning individual signal weights and an explanation even for pairs below threshold. When to use: - When tuning scoring weights, tolerances, or debugging match decisions. - When explaining match confidence for human review or exception handling. When NOT to use: - Do NOT use for entire batches; use reconcile instead. - Do NOT use for cross-currency conversions without a known FX rate; use match_amounts_with_fx_drift. Behavioral transparency: Pure, deterministic, side-effect-free, read-only calculation without external dependencies.
| Name | Type | Req | Description |
|---|---|---|---|
| expected | object | yes | One expected record. |
| observed | object | yes | One observed record. |
| options | – | – | Optional tuning object: 'abs_tol'/'rel_tol' (amount tolerance), 'date_window_days', 'high_threshold', 'review_threshold', 'currency_strict', 'enable_one_to_many', 'max_combination'. |
Structured output declared, but exposes no named fields.
No examples provided.
list_sandbox_scenarios ~106
List built-in sandbox reconciliation scenarios and magic references. Purpose: Returns the catalog of deterministic test-mode scenarios and synthetic magic references to demonstrate reconciliation outcomes without production data. When to use: - When discovering available test scenarios (e.g. clean_match, month_end, fx_drift). - When testing agent decision-making workflows with zero setup. When NOT to use: - Do NOT use for production reconciliation batches. Behavioral transparency: Static catalogue retrieval; read-only and instantaneous.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
load_sandbox_scenario ~149
Load expected and observed record inputs for a named sandbox scenario. Purpose: Retrieves the test-mode expected and observed fixture records for a named scenario so they can be inspected, customized, or passed to reconcile. When to use: - When reviewing fixture data prior to executing reconciliation runs. - When creating custom variations of standard reconciliation scenarios. When NOT to use: - Do NOT use if you want to run and reconcile the scenario in one step; use run_sandbox_scenario. - Do NOT use with non-existent scenario names. Behavioral transparency: Deterministic dictionary lookup; read-only with no side effects.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Scenario name, e.g. 'clean_match'. |
Structured output declared, but exposes no named fields.
No examples provided.
match_amounts_with_fx_drift Match amounts (FX drift) ~242
Compare two amounts in different currencies within an FX drift tolerance. Purpose: Converts currency amounts using a provided exchange rate and verifies if the percentage difference falls within an acceptable tolerance window using exact decimal arithmetic. When to use: - When reconciling cross-currency payments with conversion timing or rate variance. - When evaluating FX tolerance bounds on cross-border transactions. When NOT to use: - Do NOT use for same-currency comparisons where standard tolerance applies; use reconcile. - Do NOT use with non-positive FX rates. Behavioral transparency: Pure mathematical calculation; read-only and idempotent.
| Name | Type | Req | Description |
|---|---|---|---|
| amount_a | number | yes | Amount denominated in currency_a. |
| amount_b | number | yes | Amount denominated in currency_b. |
| currency_a | string | yes | ISO 4217 code of amount_a. |
| currency_b | string | yes | ISO 4217 code of amount_b. |
| fx_rate | number | yes | Units of currency_a per one unit of currency_b (e.g. an EUR/USD quote of 1.08 is USD per EUR). |
| tolerance_pct | number | – | Max percentage difference still counted as a match. |
Structured output declared, but exposes no named fields.
No examples provided.
match_names_probabilistic Match names (probabilistic) ~196
Score two counterparty names using Jaro-Winkler string similarity. Purpose: Computes similarity in [0, 1] between two company or individual names, tolerating typographical variations and legal suffix abbreviations (e.g. 'Corp' vs 'Corporation Inc'). When to use: - When verifying whether two counterparty or entity names represent the same party. - When evaluating name similarity thresholds for automated matching rules. When NOT to use: - Do NOT use for full multi-signal transaction matching; use reconcile or explain_match. - Do NOT use with non-string inputs. Behavioral transparency: Pure, deterministic string calculation; read-only and idempotent.
| Name | Type | Req | Description |
|---|---|---|---|
| name_a | string | yes | First counterparty name. |
| name_b | string | yes | Second counterparty name. |
| threshold | number | – | Similarity in [0, 1] at or above which the pair is a match. |
Structured output declared, but exposes no named fields.
No examples provided.
normalize_camt053 ~154
Convert parsed camt.053 statement entries into canonical observed records. Purpose: Adapts parsed ISO 20022 camt.053 bank statement documents or entry lists into canonical observed records ready for the reconcile engine. When to use: - When ingesting parsed bank statements before calling reconcile. - When transforming bank booking entries into uniform id, amount, date, and counterparty fields. When NOT to use: - Do NOT use for payment initiation orders (pain.001); use normalize_pain001 instead. - Do NOT pass raw unparsed XML text; parse or deserialize first. Behavioral transparency: Pure, deterministic, read-only data normalization.
| Name | Type | Req | Description |
|---|---|---|---|
| document | – | yes | Parsed camt.053 document or entry list. |
Structured output declared, but exposes no named fields.
No examples provided.
normalize_pain001 ~157
Convert parsed pain.001 payment instructions into canonical expected records. Purpose: Adapts parsed ISO 20022 pain.001 credit transfer documents or transaction lists into canonical expected records ready for the reconcile engine. When to use: - When ingesting parsed pain.001 files before calling reconcile. - When mapping diverse payment field structures into uniform id, amount, and reference fields. When NOT to use: - Do NOT use for bank statement entries (camt.053); use normalize_camt053 instead. - Do NOT pass raw unparsed XML text; parse or deserialize to a dictionary or list first. Behavioral transparency: Pure, deterministic, read-only data normalization.
| Name | Type | Req | Description |
|---|---|---|---|
| document | – | yes | Parsed pain.001 document or transaction list. |
Structured output declared, but exposes no named fields.
No examples provided.
reconcile ~390
Reconcile expected payments against observed bank-statement entries. Purpose: Matches expected payment instructions (e.g. from pain.001) against observed bank transactions (e.g. from camt.053) and produces an explainable reconciliation report covering exact matches, short/over adjustments, split settlements (one-to-many), batch credits (many-to-one), and unmatched residuals. When to use: - When performing multi-transaction cash reconciliation between ledgers and statements. - When transparent per-match confidence scores and reason breakdowns are required for audit. When NOT to use: - Do NOT use for raw, unparsed XML files; normalize input documents first using normalize_pain001 or normalize_camt053. - Do NOT use for single-pair tuning analysis; use explain_match instead. - Do NOT use for unconstrained combinatorial invoice subsets; use reconcile_many_to_many. Behavioral transparency: Pure, deterministic, side-effect-free, read-only calculation without network or disk access.
| Name | Type | Req | Description |
|---|---|---|---|
| expected | array | yes | List of canonical records. Each is an object with 'id' (string) and 'amount' (number) required, plus optional 'currency' (ISO 4217), 'date' (ISO-8601), 'counterparty' (name), 'reference' (remittance/… |
| observed | array | yes | List of canonical records. Each is an object with 'id' (string) and 'amount' (number) required, plus optional 'currency' (ISO 4217), 'date' (ISO-8601), 'counterparty' (name), 'reference' (remittance/… |
| options | – | – | Optional tuning object: 'abs_tol'/'rel_tol' (amount tolerance), 'date_window_days', 'high_threshold', 'review_threshold', 'currency_strict', 'enable_one_to_many', 'max_combination'. |
Structured output declared, but exposes no named fields.
No examples provided.
reconcile_many_to_many Reconcile many-to-many ~292
Match statement deposits to disjoint subsets of invoices via subset-sum ILP. Purpose: Solves bounded subset-sum as an integer linear program (ILP) to pair statement deposits against matching combinations of outstanding invoice records. When to use: - When customer deposits consolidate multiple invoices or split remittances. - When one-to-one or one-to-many heuristics leave unmatched aggregates. When NOT to use: - Do NOT use for straightforward 1:1 or 1:N reconciliation where reconcile is sufficient and faster. - Do NOT use without the optional ilp extra installed (pip install reconcile-mcp[ilp]). Behavioral transparency: Deterministic ILP optimization; read-only and idempotent.
| Name | Type | Req | Description |
|---|---|---|---|
| invoices | array | yes | List of canonical records. Each is an object with 'id' (string) and 'amount' (number) required, plus optional 'currency' (ISO 4217), 'date' (ISO-8601), 'counterparty' (name), 'reference' (remittance/… |
| statements | array | yes | List of canonical records. Each is an object with 'id' (string) and 'amount' (number) required, plus optional 'currency' (ISO 4217), 'date' (ISO-8601), 'counterparty' (name), 'reference' (remittance/… |
Structured output declared, but exposes no named fields.
No examples provided.
run_sandbox_scenario ~192
Load a named sandbox scenario and immediately return its reconciliation report. Purpose: One-call execution that loads built-in fixture records and executes the reconciliation pipeline, returning a complete explainable match report. When to use: - When performing quick verification, smoke tests, or initial agent demonstrations. - When verifying tolerance tuning against standard test cases. When NOT to use: - Do NOT use with live production data. - Do NOT use when custom expected or observed records must be supplied; use reconcile instead. Behavioral transparency: Deterministic, in-memory execution; read-only and idempotent.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Scenario name, e.g. 'month_end'. |
| options | – | – | Optional tuning object: 'abs_tol'/'rel_tol' (amount tolerance), 'date_window_days', 'high_threshold', 'review_threshold', 'currency_strict', 'enable_one_to_many', 'max_combination'. |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the io.github.sebastienrousseau/reconcile-mcp server?
io.github.sebastienrousseau/reconcile-mcp runs locally as a PyPI package, launched with uvx reconcile-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · reconcile-mcp
claude mcp add sebastienrousseau-reconcile-mcp -- uvx reconcile-mcp
What is the io.github.sebastienrousseau/reconcile-mcp server?
io.github.sebastienrousseau/reconcile-mcp is listed in the public MCP registry as io.github.sebastienrousseau/reconcile-mcp. Reconcile camt.053 statements vs expected pain.001 payments with explainable matching. This page covers its PyPI package (reconcile-mcp).
Is the io.github.sebastienrousseau/reconcile-mcp server safe to use?
io.github.sebastienrousseau/reconcile-mcp scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.sebastienrousseau/reconcile-mcp server expose?
io.github.sebastienrousseau/reconcile-mcp exposes 10 tools: reconcile, explain_match, normalize_pain001, normalize_camt053, list_sandbox_scenarios, and 5 more. Their descriptions and schemas cost roughly 2,088 tokens of context every time the server is loaded.
Is the io.github.sebastienrousseau/reconcile-mcp server still maintained?
io.github.sebastienrousseau/reconcile-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.sebastienrousseau/reconcile-mcp server under?
io.github.sebastienrousseau/reconcile-mcp declares the Apache-2.0 OR MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.