mcp-server-il-benefits
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-il-benefitsI'm at Fox in Tel Aviv, what should I do before I pay?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
npx -y github:ofershap/mcp-server-il-benefitsWorks 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 | ||||
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-benefitsVS 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
Tell your agent what you use: "I use the Cashdo and TopCash portals. Save that as my wallet."
Ask at the store: "I'm at Fox, buying about 400 shekels. What should I do before I pay?"
Tools
Tool | What it does |
| 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 |
| The connected sources, their terms page and attribution text |
| 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 withIL_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 buildTests 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
License
Available Tools
4 toolsbest_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.
| Name | Required | Description | Default |
|---|---|---|---|
| store | Yes | Store or chain, e.g. 'שופרסל', 'Fox', 'Castro' | |
| amount | No | Basket size, to estimate the saving | |
| channel | No | Defaults to both | |
| country | No | ISO country code, default 'il' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| providers | Yes |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.1.0- First observed
best_way_to_pay - First observed
list_sources - First observed
wallet_get - First observed
wallet_set
TDQS
Scored across 4 tools
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.
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.
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.
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
Related MCP Connectors
Search live local & nationwide retail stock, check prices, and run zero-click AI agent checkouts.
Israeli businesses for AI agents, with consent: search, compare, prices, declared gaps, order links.
Verified deals, store policies & a trust score for thousands of online retailers. No auth.
Live prices, stock & price history across 100+ U.S. retailers for any AI agent.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables searching and browsing products on KSP.co.il, one of Israel's largest electronics and retail stores, using natural language.35 npm6MIT
- FlicenseNot gradedqualityDmaintenanceEnables searching and comparing live credit card merchant offers (cash back, points, statement credits) across Amex, Chase, Citi, PayPal, Rakuten, and Capital One from any AI agent.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search and retrieve Israel's social services data, including service details, taxonomy, and location-based queries.MIT
- AlicenseAqualityAmaintenanceEnables 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.7MIT