Skip to main content
Glama
rightcard

rightcard-mcp

by rightcard

RightCard MCP

npm

The card-selection oracle for agents: which of your credit cards should pay here? Answers come from RightCard's bank-published, two-source-verified reward data — the same data the RightCard iOS app uses.

  • No bank login. No account. Nothing stored. You pass card ids and a store name; you get an answer.

  • Honest by construction: merchant-code caveats (Costco is a warehouse club, so the grocery bonus won't post), rotating quarters with activation flags, ties named, points valued per program.

  • Cash value by default; valuation: "points" for conservative travel values.

Use it

Hosted (stateless Streamable HTTP):

https://mcp.rightcard.ai/mcp

Local (stdio, nothing leaves your machine except a read of the public catalog):

npx rightcard-mcp

Claude Desktop / Claude Code / Cursor config:

{ "mcpServers": { "rightcard": { "command": "npx", "args": ["-y", "rightcard-mcp"] } } }

Related MCP server: Blackwell Bank Card Hub MCP

Tools

tool

what it answers

best_card

which of the given cards earns most at a store or category, today, with caveats

lookup_merchant

how a store is coded (category, merchant type, MCC-trap caveat)

search_cards

find card ids by name/issuer; verified first, unverified flagged

card

one card's verified rates, rotating windows, choose-your-category spec

rotating_calendar

live + upcoming rotating windows and permanent merchant benefits

Try: "I have the Amex Gold, Freedom Flex and Citi Double Cash. Which one at Costco?"

Parity with the app

src/engine.ts is a port of the iOS app's Swift engine. fixtures/engine_golden.json holds 3,100+ answers produced by the Swift code over the real catalog and merchant directory; npm test fails if the port disagrees on any of them. Offers (a user's personal bank offers) are deliberately not part of this server — they live on the phone.

Privacy

The hosted server logs request counts only. No identifiers, no cookies, no storage. Full policy: https://rightcard.ai/privacy

Available Tools

5 tools
best_cardBest card for a store or categoryAInspect

Which of the given cards earns the most at a store (merchant) or for a spend category, today. Returns the card, the honest rate, why, and caveats (merchant-code traps, activation, ties). Base rates + rotating bonuses + built-in card benefits only; a user's personal bank offers live on their phone and are not consulted here.

ParametersJSON Schema
NameRequiredDescriptionDefault
onNoDate (YYYY-MM-DD, UTC) for rotating windows; defaults to today.
walletYesCard ids the person holds (from search_cards).
categoryNoSpend category when there is no specific store.
merchantNoStore name, e.g. 'Costco', 'Whole Foods', 'Uber'. Use this OR category.
valuationNo'cash' counts every point at 1¢ (default). 'points' values points per program at conservative travel values.cash
chosen_categoriesNoFor choose-your-category cards (Citi Custom Cash, BofA Customized, Venmo): card id → the categories the person set.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the output: the card, the honest rate, why, and caveats including merchant-code traps, activation, and ties. It also discloses what data sources are included and excluded. It does not describe the exact return envelope or edge-case behavior, but it provides substantial behavioral context for a query-style tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight sentences with zero filler. The core purpose is front-loaded in sentence one, return contents and caveats in sentence two, and exclusions in sentence three. Every sentence earns its place and nothing repeats schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given six parameters, nested objects, no output schema, and no annotations, the description covers purpose, returned contents, caveat types, and scope exclusions. The schema covers parameter formats and enums. The main gaps are that the exact response structure is unspecified and the conflict behavior when both merchant and category are supplied is left implicit, but the combined description and schema are sufficient for a competent agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters including wallet, merchant/category, on, valuation, and chosen_categories. The description reinforces the merchant-vs-category idea and 'given cards' from wallet, but adds little semantic detail beyond what the schema provides. This matches the baseline-3 case where structured schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete question: 'Which of the given cards earns the most at a store (merchant) or for a spend category, today.' It specifies the verb (compare/rank), the resource (given cards), and the scope (store or category). It also distinguishes itself from siblings like search_cards and lookup_merchant by focusing on selecting the best earn rate rather than retrieving card data or merchant metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly bounds when the tool is valid: it only considers base rates, rotating bonuses, and built-in card benefits, and explicitly says personal bank offers are not consulted. This implicitly tells an agent not to use it when a user's personalized banking offers are in play. However, it never names sibling tools or states when to prefer them, so the guidance is strong on scope but not fully explicit on alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cardA card's verified ratesBInspect

Everything RightCard knows about one card: rates by category, base rate, currency, annual fee, verification status, live rotating windows, and the choose-your-category spec if it has one.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It transparently lists the returned content categories, which helps set expectations, but it doesn't disclose what happens for unknown card IDs, whether the data is read-only, or how verification/live windows behave. It's reasonable but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with a clear subject and a colon-delimited list of covered data points. It front-loads the core purpose and wastes no words, though the list is somewhat long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup tool with no output schema, the description covers the main information an agent needs: the input is a card id and the output is the full card knowledge. The lack of usage guidance and handling of edge cases prevents a perfect score, but the core invocation context is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a single id parameter with no description (0% coverage), so the description must compensate. It implies id identifies a card ('about one card'), but it doesn't clarify the id format, source, or behavior for invalid ids. The description adds minimal meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource (one card) and the tool's purpose: returning all known card data including rates, fees, and rotating windows. It doesn't explicitly distinguish itself from siblings like best_card or search_cards, but its focus on a single card's full data profile is sufficiently distinct for an agent to infer its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus its siblings. It doesn't mention search_cards for finding cards, best_card for ranking cards, or rotating_calendar for rotating windows, leaving the agent to infer the appropriate context from the resource name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_merchantHow a store is codedBInspect

The store's reward category as RightCard's directory files it, its merchant type, and the merchant-code caveat when a category bonus usually will not post there (superstores like Walmart/Target, warehouse clubs like Costco/Sam's). Same ranking the app uses.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It does disclose useful context: the data is 'as RightCard's directory files it' and uses 'the same ranking the app uses,' plus a caveat about stores like Walmart/Target and Costco/Sam's. However, it does not describe matching behavior, response shape, or failure handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core output fields. The caveat and examples are useful and add clarity without bloat. The title is somewhat redundant but does not harm the overall structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter lookup with no output schema or annotations, the description covers the main return data and an important edge-case caveat. However, it omits practical invocation details such as how the store name should be provided, whether matching is exact or fuzzy, and what happens for unknown stores. This leaves an agent with some reasonable but not fully certain ground.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter, 'name', with 0% description coverage, so the description must compensate. It implies the input is a store name by saying 'The store's...' and giving examples like Walmart/Target, but it never explicitly says 'pass the store name' or describes acceptable formats. This is only partial compensation for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what information the tool provides: the store's reward category, merchant type, and merchant-code caveat. It is not a tautology and the resource (store merchant coding) is evident. However, it does not explicitly differentiate itself from sibling tools like search_cards or best_card.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that the tool is used to look up a store's coding details, but it gives no explicit guidance on when to choose this tool over alternatives. There is no mention of exclusions, prerequisites, or comparison with sibling tools. The agent must infer usage entirely from the tool name and title.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rotating_calendarRotating 5% windowsAInspect

Live and upcoming rotating-category windows (Freedom Flex, Discover it, Citi Dividend…) and permanent merchant benefits, from the same verified data as the app. Optionally filter by card id.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It usefully states the data is live/upcoming, permanent, and from the same verified data as the app, implying a read-only lookup. However, it does not mention output format, authentication needs, or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one tight sentence that front-loads the main content, gives illustrative examples, and adds a credibility note about verified data. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no output schema, the description provides enough scope for an agent to call it correctly. Minor gaps remain around expected return structure and date formatting, but the tool's low complexity keeps these from being critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides zero description for card_id, so the description must compensate. It does so by explicitly stating the parameter is an optional filter, which is the core semantic needed. It does not define what a card id looks like or where to obtain one, but the single optional parameter makes this adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource: live/upcoming rotating-category windows and permanent merchant benefits, with concrete card examples. It lacks an explicit verb like 'list' or 'retrieve,' but the intent is unambiguous from the content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus siblings like lookup_merchant or search_cards. The phrase 'Optionally filter by card id' addresses parameter usage, not tool selection, so the agent gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_cardsFind card idsAInspect

Search RightCard's catalog by card or issuer name to get the ids to pass into best_card. Verified cards first; unverified cards are flagged, never hidden.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
issuerNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It adds meaningful behavior: verified cards are ordered first, unverified cards are flagged rather than removed. This goes beyond the schema and gives the agent useful expectations about result ordering and filtering policy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence states the core function and purpose; the second adds a concise but important behavioral rule. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter search tool, the description covers purpose, search scope, result ordering, and the intended use of the output ids. It doesn't describe exact return shape, but 'get the ids' sufficiently conveys the output for this context, especially given the minimal parameter schema and no nested objects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies that searching can be done by card or issuer name and that returned ids are intended for best_card, which adds meaning to query/issuer. However, it does not explain the limit parameter or fully disambiguate which parameter handles card vs issuer names, leaving a partial gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a clear resource ('RightCard's catalog'), and the downstream purpose ('to get the ids to pass into best_card'). This makes the tool's role obvious and distinguishes it from best_card, which consumes those ids.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool (before best_card, to resolve card/issuer names to ids), and it gives concrete search criteria. It doesn't explicitly contrast sibling tools or state when not to use it, but the context is strong enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedbest_card
    • First observedcard
    • First observedlookup_merchant
    • First observedrotating_calendar
    • First observedsearch_cards

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: best_card compares cards, lookup_merchant provides merchant category info, search_cards finds card IDs, card gives detailed card data, and rotating_calendar lists rotating offers. There is no overlap or ambiguity between them.

Naming Consistency4/5

All tool names use snake_case and are readable. Most follow verb_noun pattern (lookup_merchant, search_cards) but 'card' and 'rotating_calendar' differ slightly; still, the style is consistent and predictable.

Tool Count5/5

With 5 tools, the server is well-scoped for its purpose of card rewards recommendations. Each tool is necessary and not redundant, fitting comfortably in the ideal 3-15 range.

Completeness5/5

The domain of finding the best card for a merchant or category is fully covered: search for cards, retrieve card details, check merchant categories, compare cards, and consult rotating offers. There are no obvious missing operations for this specific use case.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides tools to fetch and analyze credit card data with filtering options for banks, categories, and user personas. It also offers access to educational guides to assist in making informed financial recommendations.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to explore and manage banking card features including product discovery, comparison, eligibility checks, spend insights, merchant offers, travel notices, card controls, and digital wallet provisioning.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to the CatalogAPI global rewards and gift card API, enabling assistants to answer questions about reward coverage, catalog contents, and integration via live data.
    MIT