Skip to main content
Glama
ofershap

mcp-server-il-benefits

npx -y github:ofershap/mcp-server-il-benefits

Works with Claude Desktop, Cursor, VS Code Copilot, and any MCP client. No API key. No account. Your wallet (a list of names) never leaves your machine.

Why this exists

You stand at the checkout at Castro with a bag of clothes. The person in front of you is fiddling with a coupon. You have a credit card, a club card and a few apps, and no idea which one saves you money. Some savings only work if you act before you pay: a friend of the author loaded a prepaid card with 250 shekels for 187.5 at a mall, bought a 100 shekel voucher for 59, and noticed another couple at every checkout doing the same dance.

Today it finds cashback and discounted gift cards for stores such as Fox, Golf, Terminal X, Home Center, Zer4u, adidas, ASOS, Shein, AliExpress, iHerb, Booking.com and Expedia (each one checked live through this server on 2026-10-16). Coverage is mostly online stores, and many chains, Castro included, return nothing yet.

The idea: you tell your agent "I'm at store X", and it checks what is available and tells you what to do before you pay. Sometimes that is "buy this discounted gift card first". Sometimes it is "open the store through this cashback link first".

The data for that already exists, aggregated by other people. Building a second database would be pointless and would copy someone else's work. So this project is only the connection: a small MCP server and a skill that let your agent ask an existing aggregator one question at a time, and answer you with the source and the link.

Related MCP server: GetCurrentOffer MCP Server

What it does and does not do

  • Asks the connected source live, once per question. Nothing is cached, crawled or stored.

  • Ranks results with the providers you said you use first (cashback portals, gift card sellers). The wallet is a local list of names.

  • Always returns the source attribution and the original link, as the source's terms require.

  • Never buys anything, never generates a code, never logs in for you. You click the link.

  • Says so when a store has no result, instead of guessing.

Coverage today (read this first)

The only source shipped is GotCashback, because its terms explicitly welcome AI agents that fetch current information to answer a user's question (section 5). It covers cashback portals and discounted gift cards. In Israel it lists a few hundred stores, so many chains return nothing. Hebrew store names match better than English ones (for example סופר פארם found a result where Super-Pharm did not).

It does not know the benefits of your credit card, bank club or employer club at a given store. The databases that hold those are third-party sites whose terms do not allow automated access, so they are not connected. See DATA_SOURCES.md for each source, the terms clause that decided it, and the date it was checked. The server is built so another source can be added the day its owner permits it.

What makes it different

mcp-server-il-benefits

hopala MCP

GotCashback MCP

ClawSavings

What it is

Mediator with a wallet and a "what do I do before I pay" answer

Hosted catalogue of club offers

Hosted cashback and gift card database

Static skill with category tips

Knows what you use

Yes, local file

No

No

No

Says when to act (before paying, after)

Yes

In terms text

Cashback only

Partly

Own dataset

None

Yes

Yes

Yes

Source and link on every answer

Yes

Varies

Yes

Per source

GotCashback's own MCP server is the better choice if you only want cashback rates in a chat. This project adds the wallet, the "before you pay" framing and a place to plug in more sources.

Quick start

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "il-benefits": {
      "command": "npx",
      "args": ["-y", "github:ofershap/mcp-server-il-benefits"]
    }
  }
}

Claude Desktop

Add the same block to claude_desktop_config.json.

Claude Code

claude mcp add il-benefits -- npx -y github:ofershap/mcp-server-il-benefits

VS Code

Add to user settings or .vscode/mcp.json:

{
  "mcp": {
    "servers": {
      "il-benefits": { "command": "npx", "args": ["-y", "github:ofershap/mcp-server-il-benefits"] }
    }
  }
}

First run

  1. Tell your agent what you use: "I use the Cashdo and TopCash portals. Save that as my wallet."

  2. Ask at the store: "I'm at Fox, buying about 400 shekels. What should I do before I pay?"

Tools

Tool

What it does

best_way_to_pay

Store (Hebrew or English), optional country, basket size and channel. One live request per connected source. Returns ranked options, your providers first, with how to use each, a link and the source attribution

list_sources

The connected sources, their terms page and attribution text

wallet_get / wallet_set

Read or replace the list of provider names you use. Names only, saved locally

Examples

  • "I'm at Fox. What should I do before I pay?"

  • "אני בפוקס, איך הכי משתלם לשלם?"

  • "Is there a discounted gift card for this store?"

  • "Which of my cashback portals pays the most here?"

Privacy

  • The wallet is a list of names in ~/.config/mcp-server-il-benefits/wallet.json (override with IL_BENEFITS_HOME).

  • No card numbers, balances or ID numbers are asked for or stored.

  • The only network call is the store name and a country code, sent to the connected source when you ask. Nothing else leaves your machine.

Agent skill

skills/which-card-to-pay/SKILL.md teaches an agent the in-store flow: read the wallet, ask for the store, answer with the best action and when to take it, show the links, and say when nothing was found. This repo is an Agent Plugins 1.0.0 package: plugin.json, mcp.json and skills/.

Adding a source

A source is one file implementing BenefitSource in src/sources/. It must make one live request per question and keep no copy. It may be added only if the source's own terms allow automated, per-request access, or the owner gave written permission. See CONTRIBUTING.md.

FAQ

What is mcp-server-il-benefits?

An MCP server and agent skill that lets an AI agent ask an existing benefits aggregator, live, what discount, cashback or gift card deal applies at a store in Israel, and tells you what to do before you pay.

Which credit card should I use at a store in Israel?

This tool cannot tell you yet. It does not have credit card or club data, because those databases do not permit automated access. It finds cashback and discounted gift cards. Your card issuer's app is still the place for card benefits.

Does it scrape websites?

No. It calls the public MCP endpoint that GotCashback publishes for AI assistants, one request per question, and follows its attribution and no-caching rules.

Can it buy the gift card or generate a coupon code for me?

No, by design. It returns the link and the steps. You decide and you pay.

Is it commercial?

No. MIT licensed, no ads, no affiliate links of its own. The links returned are the source's own tracked links, shown unchanged, as its terms require.

Does it work in Hebrew?

Yes. Store names are passed through as you type them.

Do I need API keys or an account?

No.

Development

git clone https://github.com/ofershap/mcp-server-il-benefits.git
cd mcp-server-il-benefits
npm install
npm test
npm run build

Tests use recorded fixtures and a fake network. No test calls a live service.

See also

More MCP servers and developer tools on my portfolio.

Author

Made by ofershap

LinkedIn GitHub

License

MIT

Available Tools

4 tools
best_way_to_payBest way to pay at a storeA

Use when the user is in or heading to a store and asks which card, club, cashback portal or discounted gift card to use. Takes a store or chain name in Hebrew or English. Makes one live request to the connected benefit sources and returns ranked options (the user's own providers first), how to use each, and a link. Always show the links and the source attribution, and tell the user to confirm at checkout. Never buys anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
storeYesStore or chain, e.g. 'שופרסל', 'Fox', 'Castro'
amountNoBasket size, to estimate the saving
channelNoDefaults to both
countryNoISO country code, default 'il'

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 full burden and does well: it discloses that it makes a single live request to connected benefit sources, that results are ranked with the user's own providers first, and that it is read-only in effect ('Never buys anything'). It omits auth/permission requirements and any freshness or rate-limit caveats, keeping it out of 5 territory.

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?

Three sentences, each earning its place: trigger first, then behavior/return shape, then the agent-facing obligations (show links, attribute sources, tell the user to confirm at checkout). Front-loaded and free of filler.

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?

There is no output schema, so the description must describe returns — and it does: ranked options, how to use each, and a link, plus attribution expectations. Missing only edge-case handling (unknown store, no matching offers) and the effect of the optional amount/channel/country parameters.

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 baseline is 3. The description adds only one genuine semantic beyond the schema — that the store name may be supplied in Hebrew or English — which is helpful but marginal against four well-documented parameters.

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?

States a precise verb+resource: it returns ranked payment options (card, club, cashback portal, discounted gift card) for a given store. The subject matter is clearly distinct from the wallet and source-listing siblings, and an agent can tell what a call produces before opening the schema.

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?

Gives an explicit trigger condition — the user is in or heading to a store and asks which payment method to use. It also implies a boundary with 'Never buys anything'. However, it never names an alternative (e.g. wallet_get) or states when NOT to call it, so the routing guidance stops short of a 5.

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

list_sourcesList connected benefit sourcesA

Show which existing benefit databases this server asks, their terms page and what they cover. Use to explain where an answer came from or why a store has no result.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses the shape of the result (databases, terms page, coverage), which is useful since there is no output schema, but says nothing about permissions, read-only nature, or rate limits. Adequate but incomplete for an annotation-free 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?

Two tight sentences, with the content description front-loaded and the usage cue second. 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 zero-parameter, annotation-free read tool with no output schema, the description covers both what is returned and when to reach for it. Only minor gaps remain, e.g. freshness or any auth requirement for reading source metadata.

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 tool takes zero parameters, so the schema imposes nothing to explain. Baseline of 4 applies; the description adds no parameter detail because none is needed.

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?

States a specific verb ("Show") and resource (the benefit databases this server queries), plus what each entry contains (terms page, coverage). It is clearly distinct from the wallet/best_way_to_pay siblings, though it never explicitly contrasts itself with them.

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?

Gives an explicit trigger: "Use to explain where an answer came from or why a store has no result." That is a concrete when-to-use condition. It does not name when-not to use it or point to an alternative tool, so it stops short of a 5.

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

wallet_getShow the saved walletA

Show the cashback portals, clubs and sellers the user said they use. The wallet is a local file of names. It never leaves the machine.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: the wallet is a local file that 'never leaves the machine,' which tells the agent this is a private, non-network read. It stops short of stating read-only guarantees, pagination, or error behavior, but the privacy disclosure is substantive.

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 short sentences, front-loaded with what the tool returns and followed by a useful privacy note. Every sentence earns its place with no 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 zero-parameter read tool with no output schema and no annotations, the definition identifies content (portals, clubs, sellers) and privacy posture, which is enough to call it correctly. It could add a hint about the return shape (e.g., list of names) but is otherwise sufficient.

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 tool takes zero parameters, so there is nothing to disambiguate; baseline for a no-parameter tool is 4. The description correctly implies no input is required.

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?

States a clear verb (Show/get) and resource (the saved wallet), and goes further by enumerating what it contains: cashback portals, clubs, and sellers. This distinguishes it from wallet_set and from list_sources, though it never explicitly names those siblings as alternatives.

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

Usage Guidelines3/5

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

Usage is only implied by 'the user said they use' — the description suggests this reads saved preferences but gives no explicit when-to-use or when-not guidance relative to list_sources or best_way_to_pay. An agent can infer the context but gets no routing rules.

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

wallet_setSave the providers the user usesA

Replace the saved wallet with provider names as they appear in results (for example a cashback portal name or a gift card seller). Used to rank the user's own providers first. Store names only. Never ask for or store card numbers, balances or personal details.

ParametersJSON Schema
NameRequiredDescriptionDefault
providersYes

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 and does disclose important traits: this is a full replacement of the saved wallet (implicitly destructive), only names should be stored, and card numbers/balances/personal details must never be asked for or stored. It omits auth requirements, error behavior, and what an empty array does, which keeps it below 5.

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?

Three tight sentences with no filler, front-loaded with the replace action and immediately followed by the purpose and the safety boundary. Every sentence 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 single-parameter setter with no output schema and no annotations, the description covers what is stored, the replacement semantics, and the privacy constraints. The remaining gap is return/confirmation behavior and the empty-array edge case, which are minor.

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 the array elements are provider names in the exact form shown in results and gives examples (cashback portal, gift card seller), which is meaningful. However it does not mention the 100-item cap, 80-char limit, or whether an empty array clears the wallet.

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?

States a specific verb (replace) and resource (the saved wallet) plus exactly what is stored: provider names as they appear in results, with concrete examples. The 'replace' framing distinguishes it from the read-only wallet_get sibling without needing to open either schema.

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?

'Used to rank the user's own providers first' gives clear context for why and when the tool is invoked, which is more than a bare 'set'. It stops short of naming alternatives or stating exclusions (e.g., use wallet_get to read, or what happens on an empty list).

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. 4 tool updatesv0.1.0
    • First observedbest_way_to_pay
    • First observedlist_sources
    • First observedwallet_get
    • First observedwallet_set

TDQS

A4/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: best_way_to_pay queries benefits, list_sources explains data origins, wallet_get reads the saved wallet, and wallet_set writes it. The read/write pair is unambiguous, and there is no meaningful overlap between tools.

Naming Consistency3/5

The set mixes three conventions: a natural-language phrase (best_way_to_pay), verb_noun (list_sources), and noun_verb (wallet_get, wallet_set). Names are readable but not predictable as a pattern.

Tool Count4/5

Four tools map neatly onto the narrow domain (query benefits, inspect sources, read/write a wallet). It is slightly thin but each tool earns its place with no redundancy.

Completeness4/5

The surface covers query, source explanation, and wallet read/write for the benefits domain. Minor gaps exist, such as no way to add or remove individual providers (wallet_set replaces the whole list), but core workflows are served.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and browsing products on KSP.co.il, one of Israel's largest electronics and retail stores, using natural language.
    35 npm
    6
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables an LLM agent to search products, manage a shopping cart, and reorder from purchase history at the Rami Levy supermarket chain via its real API.
    7
    MIT