rightcard-mcp 0.1.7 → 0.1.9

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.
Files changed (2) hide show
  1. package/dist/engine.js +12 -6
  2. package/package.json +1 -1
package/dist/engine.js CHANGED
@@ -155,7 +155,9 @@ function bestBaseCard(cards, category, subKey, merchantQuery, overrides, cardCon
155
155
  }
156
156
  function rateContext(card, earn, valueCents, override, configured, v, category, now, chosenCategoryCount) {
157
157
  const valueStr = formatPercent(valueCents);
158
- const cat = CATEGORY_DISPLAY[category].toLowerCase();
158
+ // "everyday purchases", not "general" — mirrors SpendCategory.inSentence
159
+ // in the app (Oct 8 2026).
160
+ const cat = category === "general" ? "everyday purchases" : CATEGORY_DISPLAY[category].toLowerCase();
159
161
  const disp = CATEGORY_DISPLAY[category];
160
162
  let reason;
161
163
  const lines = [];
@@ -187,9 +189,11 @@ function rateContext(card, earn, valueCents, override, configured, v, category,
187
189
  lines.push(`${formatMultiplier(override.bonusRate)} ${earnUnitLabel(v, card)} × ${fmt1(centsPerPoint(v, card))}¢ → ${valueStr} per $1`);
188
190
  }
189
191
  if (override.requiresActivation) {
190
- const issuer = card.issuer ?? "issuer";
191
- reason += ` Activate it in your ${issuer} app to earn the bonus.`;
192
- lines.push(`⚠︎ Activate this quarter in your ${issuer} app`);
192
+ // Mirrors the Swift engine (Oct 9 2026 wording pass): no issuer on the
193
+ // card → "your bank's app", never the jargon "issuer".
194
+ const owner = card.issuer != null ? `${card.issuer}` : "bank's";
195
+ reason += ` Activate it in your ${owner} app to earn the bonus.`;
196
+ lines.push(`⚠︎ Activate this quarter in your ${owner} app`);
193
197
  }
194
198
  }
195
199
  else if (pointsAbove) {
@@ -205,10 +209,12 @@ function rateContext(card, earn, valueCents, override, configured, v, category,
205
209
  // Mirrors the Swift engine (Sep 2026): a points/miles card in cash mode
206
210
  // still EARNS points — never blur the earn (4x points) with its value (4%).
207
211
  if (card.rewardCurrency !== null && card.rewardCurrency !== "cashback") {
208
- lines.push(`Base ${cat} earn: ${formatMultiplier(earn)} ${earnUnitLabel(v, card)} → ${valueStr}`);
212
+ lines.push(category === "general"
213
+ ? `Base rate: ${formatMultiplier(earn)} ${earnUnitLabel(v, card)} → ${valueStr}`
214
+ : `Base ${cat} earn: ${formatMultiplier(earn)} ${earnUnitLabel(v, card)} → ${valueStr}`);
209
215
  }
210
216
  else {
211
- lines.push(`Base ${cat} earn: ${valueStr}`);
217
+ lines.push(category === "general" ? `Base rate: ${valueStr}` : `Base ${cat} earn: ${valueStr}`);
212
218
  }
213
219
  }
214
220
  let caption = configured ? "your bonus category · value per $1" : override ? "rotating bonus · value per $1" : "value per $1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rightcard-mcp",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "mcpName": "ai.rightcard/mcp",
5
5
  "description": "RightCard MCP — the card-selection oracle for agents. Which of your credit cards to use at any store, from verified data. No bank login.",
6
6
  "type": "module",