@lerianstudio/matcher-mcp 5.0.0-beta.45 → 5.0.0-beta.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2521,6 +2521,11 @@ components:
2521
2521
  sla:
2522
2522
  $ref: "#/components/schemas/SLAStatsResponse"
2523
2523
  description: SLA compliance statistics for the window.
2524
+ unmatchedByCurrency:
2525
+ description: Unreconciled exposure split by currency; the amounts sum to volume.unmatchedAmount. Empty when no transaction in the window is UNMATCHED or PENDING_REVIEW; always an array, never null. volume.unmatchedAmount is the engine's arithmetic sum of those amounts across currencies, so it is a meaningful money figure only when this split carries a single currency. Clients must not render it as money when the split names more than one currency.
2526
+ items:
2527
+ $ref: "#/components/schemas/CurrencyExposureResponse"
2528
+ type: array
2524
2529
  updatedAt:
2525
2530
  description: Timestamp when these aggregates were computed (RFC 3339, UTC).
2526
2531
  examples:
@@ -2534,6 +2539,7 @@ components:
2534
2539
  - volume
2535
2540
  - matchRate
2536
2541
  - sla
2542
+ - unmatchedByCurrency
2537
2543
  - updatedAt
2538
2544
  type: object
2539
2545
  Detail:
@@ -1,7 +1,8 @@
1
1
  // `dashboard_aggregates` — curated GET /v1/reports/contexts/{contextId}/dashboard.
2
2
  //
3
- // The combined dashboard read: volume, match-rate, and SLA aggregates in one
4
- // payload (spec operationId getDashboardAggregates). Shares the family input
3
+ // The combined dashboard read: volume, match-rate and SLA aggregates, plus the
4
+ // unreconciled exposure split per currency, in one payload (spec operationId
5
+ // getDashboardAggregates). Shares the family input
5
6
  // shape (contextId path + optional date_from/date_to/source_id query) and the
6
7
  // fail-closed relay. The report is implicitly tenant-scoped by the relayed
7
8
  // token; contextId is a routing path param and source_id a data filter — neither
@@ -16,7 +17,13 @@ export const dashboardAggregatesInputShape = dashboardQueryInputShape;
16
17
  */
17
18
  export function registerDashboardAggregatesTool(server) {
18
19
  server.registerTool('dashboard_aggregates', {
19
- description: 'Get the combined dashboard aggregates (volume, match rate, and SLA) ' +
20
+ description: 'Get the combined dashboard aggregates (volume, match rate, SLA, and ' +
21
+ 'unmatchedByCurrency: the unreconciled exposure split into one entry per ' +
22
+ 'currency, each with amount and transactionCount, whose amounts sum to ' +
23
+ 'volume.unmatchedAmount and whose counts sum to volume.unmatchedCount; ' +
24
+ 'empty when no transaction in the window is UNMATCHED or ' +
25
+ 'PENDING_REVIEW, and the only place the payload ' +
26
+ 'names a currency, since volume.unmatchedAmount carries none) ' +
20
27
  'for a reconciliation context. Pass contextId (UUID path param — not a ' +
21
28
  'tenant field), and optionally date_from/date_to (YYYY-MM-DD; matcher ' +
22
29
  'defaults to the last ~30 days and SILENTLY EXCLUDES older data — for ' +
@@ -1 +1 @@
1
- {"version":3,"file":"aggregates.js","sourceRoot":"","sources":["../../../src/tools/dashboard/aggregates.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,2EAA2E;AAC3E,iFAAiF;AACjF,sDAAsD;AAItD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,mFAAmF;AACnF,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAwB,CAAA;AAErE;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,sEAAsE;YACtE,wEAAwE;YACxE,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,mEAAmE;YACnE,2DAA2D;QAC7D,WAAW,EAAE,6BAA6B;KAC3C,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO,iBAAiB,CACtB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"aggregates.js","sourceRoot":"","sources":["../../../src/tools/dashboard/aggregates.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,mDAAmD;AACnD,8EAA8E;AAC9E,2EAA2E;AAC3E,iFAAiF;AACjF,sDAAsD;AAItD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,mFAAmF;AACnF,MAAM,CAAC,MAAM,6BAA6B,GAAG,wBAAwB,CAAA;AAErE;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,sEAAsE;YACtE,0EAA0E;YAC1E,wEAAwE;YACxE,wEAAwE;YACxE,0DAA0D;YAC1D,iDAAiD;YACjD,+DAA+D;YAC/D,wEAAwE;YACxE,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,mEAAmE;YACnE,2DAA2D;QAC7D,WAAW,EAAE,6BAA6B;KAC3C,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;QACvC,OAAO,iBAAiB,CACtB;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,EACD,KAAK,CACN,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lerianstudio/matcher-mcp",
3
- "version": "5.0.0-beta.45",
3
+ "version": "5.0.0-beta.47",
4
4
  "type": "module",
5
5
  "description": "Model Context Protocol server for the Matcher reconciliation engine",
6
6
  "license": "Apache-2.0",