Skip to main content
Glama
danielJL-altius

Israel Grocery MCP

Israel Grocery MCP

Unified Model Context Protocol (MCP) server for Israeli grocery shopping — Shufersal + Tiv Taam with cross-store price comparison, recipe-driven cart automation, and an extensible plugin architecture for future stores.

Features

  • Cross-store search — search both Shufersal and Tiv Taam simultaneously

  • Price comparison — see side-by-side pricing for any product or full recipe

  • Smart recipe shopping — parse any recipe, find the best deals across stores, and add items to the cheapest cart automatically

  • Split-cart recommendations — buy each ingredient from wherever it's cheapest and see your total savings

  • Preference system — set a preferred store, shopping strategy (cheapest / preferred / quality), organic preference, brand blacklisting, and more

  • Diagnostics tooldiagnose() surfaces HTTP errors, response shapes, and session state

Related MCP server: Tiv Taam MCP Server

Setup

1. Install uv

curl -Ls https://astral.sh/uv/install.sh | sh

2. Install dependencies

cd israelgrocery
uv sync

3. Install Playwright (required for Shufersal browser login)

uv run playwright install chromium

4. Configure environment (optional)

cp .env.example .env
# Edit .env as needed

Running the server

uv run israelgrocery-mcp

Claude Desktop configuration

{
  "mcpServers": {
    "israelgrocery": {
      "command": "uv",
      "args": ["--directory", "/path/to/israelgrocery", "run", "israelgrocery-mcp"]
    }
  }
}

Available MCP Tools

Tool

Description

login_status()

Show login status for all stores

login_tivtaam(email, password)

Log in to Tiv Taam

login_shufersal()

Open browser for Shufersal login

check_login(store_id?)

Live session validation

set_preferences(...)

Shopping preferences

search_products(query, stores?)

Search across stores

compare_prices(query)

Price comparison for an item

show_cart(store_id?)

View cart(s)

add_to_cart(store_id, product_id, qty)

Add to a specific cart

plan_recipe_ingredients(recipe_text)

Parse recipe ingredients

compare_recipe(recipe_text)

Full recipe cost comparison

add_recipe_to_cart(recipe_text, ...)

Automated recipe shopping

diagnose(store_id?)

Debug API connections

Example prompts for Claude

  • "Compare prices for eggs and milk across both stores"

  • "I want to make shakshuka — find all the ingredients and tell me where to buy them cheapest"

  • "Add this pasta recipe to my Tiv Taam cart: [paste recipe]"

  • "Buy each ingredient from wherever it's cheapest and show me the savings"

  • "Search for chicken breast on both stores"

Shopping strategies

Strategy

Behaviour

cheapest (default)

Each item is bought from whichever store has the lower price

preferred_store

Always use your set preferred store unless it has no match

quality

Prefer the highest-confidence product match regardless of price

Adding a new store

  1. Create src/stores/mystore.py implementing BaseStore

  2. Register it in src/stores/__init__.pybuild_registry()

  3. Add config in src/config.py

  4. Done — all existing tools automatically include the new store

Running tests

uv run pytest tests/ -v

Available Tools

14 tools
add_recipe_to_cartA
Parse a recipe, find best-matching products, and add them to a cart.

Args:
    recipe_text: Recipe text or URL.
    store_id: Which store to add to ("shufersal" or "tivtaam").
              If omitted, uses your preferred_store or the cheapest per item.
    strategy: "cheapest" — buy each item from its cheapest store.
              "preferred_store" — use your preferred_store for everything.
              "single_store" — use store_id for everything (requires store_id).
    confirm_all: If True, add low-confidence matches without pausing.
ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNo
strategyNocheapest
confirm_allNo
recipe_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose meaningful behavior: low-confidence matches normally pause, confirm_all suppresses that pause, and store selection falls back to preferred_store or cheapest. It omits auth/login prerequisites (notable given login_* siblings) and failure behavior, but the confidence-pause semantics are genuinely useful disclosure.

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 summary line is front-loaded and the Args block is terse and scannable. The docstring-style formatting is slightly verbose but every line carries semantic weight for an undocumented schema.

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?

An output schema exists, so return values need not be explained, and all four parameters are covered. The main gap is that login/authentication requirements are unstated for a cart-mutating tool, but overall the description is sufficient to invoke it correctly.

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?

Schema coverage is 0% with no enums, so the description must compensate, and it does: it defines all four parameters including accepted values for store_id and the three strategy modes with their interaction with store_id. It does not restate defaults, but the mapping of values to behavior is clear.

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 multi-step action (parse recipe, match products, add to cart) on a concrete resource. It is clearly distinguishable from siblings like compare_recipe and add_to_cart, which do one of those steps only.

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?

Explains the selection logic between strategies and the fallback when store_id is omitted (preferred_store or cheapest per item). It does not explicitly say when to prefer this tool over plan_recipe_ingredients or compare_recipe, so it stops short of full alternative routing.

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

add_to_cartB
Add a specific product to a store's cart.

Args:
    store_id: "shufersal" or "tivtaam".
    product_id: The product ID from search results.
    quantity: Number of units (default: 1).
ParametersJSON Schema
NameRequiredDescriptionDefault
quantityNo
store_idYes
product_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and does not meet it. It says nothing about the auth/session requirement implied by the login_* siblings, whether adding an existing item merges or duplicates, or whether the operation is idempotent.

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?

Front-loads the purpose in one sentence, then gives per-argument notes compactly. No filler; the Args block is functional rather than padded, though slightly more routing context could have been added without bloat.

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?

An output schema exists, so return values need not be described. Still, for a cart-mutating tool surrounded by login and verify_cart siblings, the description omits session/auth expectations and cart-merge behavior, leaving notable gaps for an agent to call it reliably.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: it supplies concrete store_id values ('shufersal' or 'tivtaam'), identifies product_id's source (search results), and states quantity's default. Only the boundaries of quantity (min/max, integers only) are left unstated.

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 and resource ('Add a specific product to a store's cart'), so the core action is unambiguous. However, it never distinguishes itself from the sibling add_recipe_to_cart or add_to_cart-adjacent tools, leaving the agent to infer which add-tool applies.

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 when-to-use guidance or alternatives are given. The note that product_id comes 'from search results' faintly implies a search-then-add flow, but there is no statement about prerequisites (e.g. login) or when to prefer this over add_recipe_to_cart.

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

check_loginA
Perform a live login check for one or all stores.

Args:
    store_id: "shufersal" or "tivtaam", or omit for all.
ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. 'Live' usefully signals a real network/authentication attempt rather than a cached status, but the description does not disclose side effects (session creation, credential validity handling) or per-store failure behavior.

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?

One sentence of purpose followed by a tightly scoped Args block. Nothing is redundant and the operative constraint (omit for all) is stated plainly.

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?

An output schema exists, so return values need not be described, and the single parameter plus one-vs-all usage is fully covered. The remaining gap is distinguishing this tool from the login_* siblings, which an agent must infer.

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

Parameters5/5

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

Schema description coverage is 0% and the parameter has no enum, yet the description supplies the exact accepted values ('shufersal' or 'tivtaam') and the semantics of omission (all stores). This is exactly the compensation the schema lacks.

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?

'Perform a live login check for one or all stores' gives a specific verb (check) and resource (login) plus scope (one or all stores). It does not explicitly distinguish itself from the sibling login_shufersal / login_tivtaam, but the 'check' vs 'login' framing and the store_id enumeration make the intent decodable.

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?

It states the two operating modes (pass a store_id, or omit it to check all), which is real usage guidance. However it never says when to use this instead of login_shufersal/login_tivtaam or login_status, and no prerequisites or exclusions are given.

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

compare_pricesC
Compare prices for a product across all connected stores.

Args:
    query: What you're looking for (e.g. "eggs", "chicken breast").
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/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 implies a read-only search against multiple stores but never states auth requirements, latency across N stores, rate limits, or what happens when stores are not connected. Only the multi-store scope is disclosed.

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?

One sentence plus a docstring-style arg note; front-loaded and free of filler. The 'Args:' block is slightly awkward framing but is efficiently sized for a single-parameter tool.

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?

An output schema exists, so return values need not be explained. However, for a tool whose siblings are all login/checkout operations, omitting any auth or store-connection prerequisite leaves a real gap an agent must discover by failure.

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% – the only param is a bare 'query' string with no schema-level description. The description compensates with examples ('eggs', 'chicken breast'), which is genuinely helpful, but adds no format constraints, matching behavior, or normalization rules.

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 and resource: comparing prices for a product 'across all connected stores.' This distinguishes it from siblings like search_products (single-store lookup) and compare_recipe, though it never explicitly names those alternatives. Clear purpose without sibling routing.

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 when-to-use guidance, no prerequisites, and no mention of the login tools (login_tivtaam, login_shufersal, check_login) that clearly gate this operation. An agent cannot tell from the description whether it must authenticate first or which store set 'connected' implies.

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

compare_recipeA
Parse a recipe and compare ingredient prices across all connected stores.
Shows which store is cheapest overall and where to buy each item for the best deal.

Args:
    recipe_text: Recipe text or URL.
ParametersJSON Schema
NameRequiredDescriptionDefault
recipe_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations, so the description carries the full burden. It discloses the useful behavioral fact that results span 'all connected stores' (implying prior logins), but says nothing about authentication failure, how many stores, latency, or error behavior when no store is connected.

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?

Two-sentence summary followed by a compact Args block; the outcome (cheapest store, per-item best deal) is front-loaded. Every line earns its place, though the Args header for a single 0%-documented param is slightly redundant.

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?

An output schema exists, so return-value detail is unnecessary. The description covers what the tool does and what it accepts, but omits the prerequisite that stores must be logged in — a notable gap given the login_* siblings.

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?

Schema description coverage is 0% and the single parameter has no schema description, so the description must compensate. It does: 'recipe_text: Recipe text or URL' clarifies the accepted format (raw text or link), which the bare schema does not convey.

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+resource ('Parse a recipe and compare ingredient prices') and defines the output ('which store is cheapest overall and where to buy each item'). It is distinguishable from the generic compare_prices sibling, though it never names that sibling to make the distinction explicit.

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?

The description implies usage (supply recipe text or a URL) but gives no when/when-not guidance or routing against compare_prices, plan_recipe_ingredients, or add_recipe_to_cart, all of which touch overlapping recipe/price territory. An agent must infer the choice from names alone.

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

diagnoseA
Run a full diagnostic for one or all stores.
Shows session status, raw API response, and parsed result count.

Args:
    store_id: "shufersal" or "tivtaam" — omit to check all.
    test_query: Simple English word to test search (default: "eggs").
ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNo
test_queryNoeggs

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 does disclose the output shape (session status, raw API response, parsed result count) and that it exercises a search as a test, but it never states whether it is read-only, whether it triggers or refreshes a login, or whether it has side effects — meaningful gaps for a tool that touches sessions.

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?

Front-loaded with the core action, then the reported outputs, then per-argument notes. No filler sentences, though the docstring-style 'Args:' block is slightly more verbose than the two parameters warrant.

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?

The tool is low-complexity (2 optional params, no nesting) and an output schema exists, so return values need not be described. The description still covers both parameters and the diagnostic's purpose adequately; only side-effect and auth behavior remain unaddressed.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it supplies the two valid store_id values ('shufersal' or 'tivtaam'), explains that omitting it checks all stores, and gives the test_query default ('eggs'). Only the semantic difference between omitting store_id and passing null is left unstated.

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 concrete verb and scope: 'Run a full diagnostic for one or all stores,' and enumerates what it reports (session status, raw API response, parsed result count). That is specific enough to separate it from the narrower login/check_login siblings, though it never names those overlapping tools explicitly.

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 implied by the diagnostic framing, and it gives useful routing on the store_id axis ('omit to check all'). However, it never says when to reach for diagnose versus check_login or login_status, which cover adjacent session-inspection ground, and no exclusions are stated.

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

login_shufersalA
Open a browser window for Shufersal login.
Complete the sign-in on shufersal.co.il and the session will be captured automatically.
Requires Playwright: run `uv run playwright install chromium` once.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 discloses key behaviors: it opens a browser window, requires the user to complete sign-in manually on the site, and captures the session automatically. The Playwright installation prerequisite is also valuable operational context. It does not cover edge cases like existing sessions or error handling, but it is solid for a login flow.

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 short sentences, front-loaded with the main action and followed by the automatic capture behavior and the prerequisite. Every sentence earns its place with no wasted words.

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?

The description explains the login flow, the automatic session capture, and the environment prerequisite. Because an output schema exists, return values need not be described. The main missing contextual link is how this tool relates to sibling tools like login_status and check_login after the session is captured.

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 are no parameter semantics to document. The baseline for a zero-parameter tool is 4, and the description appropriately does not invent parameter details.

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 states a specific verb and resource: 'Open a browser window for Shufersal login' and 'Complete the sign-in on shufersal.co.il.' This distinguishes it from most siblings by naming Shufersal, but it does not explicitly contrast with the sibling login_tivtaam, so sibling differentiation is only implicit.

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 implied: the tool is for logging into Shufersal, and a prerequisite is given ('Requires Playwright: run `uv run playwright install chromium` once'). However, there is no explicit guidance on when to choose this over alternatives like login_tivtaam, login_status, or check_login.

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

login_statusA

Show the login status for all configured grocery stores.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 implies a read-only status inspection with no mutations, but does not state whether authentication is required, whether it probes live logins or reports cached state, or if it has side effects such as refreshing sessions.

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?

A single front-loaded sentence with no filler. The scope constraint ('all configured grocery stores') comes before anything else, and 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?

With an output schema present, the description need not explain return values, and a zero-parameter tool needs no input documentation. The only missing element is differentiation from the sibling check_login, which is a small completeness gap rather than a functional one.

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 baseline is 4. There are no inputs whose meaning needs elaboration in the description.

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+resource: 'Show the login status' scoped to 'all configured grocery stores'. It is clear what the tool does, but it does not distinguish itself from the sibling 'check_login' or the per-store login tools, which an agent must disambiguate from the name alone.

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?

The phrase 'for all configured grocery stores' implies this is the bulk/all-stores view versus per-store login tools, giving implied usage. However, it never says when to prefer it over the sibling 'check_login', which is the obvious alternative, and there are no exclusions or prerequisites.

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

login_tivtaamC
Log in to Tiv Taam with email and password.

Args:
    email: Your Tiv Taam account email address.
    password: Your Tiv Taam account password.
ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
passwordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions authentication but does not disclose whether credentials are stored, whether a session is created, how errors are handled, or what the output contains (though output schema exists). For a login tool, this is a notable gap.

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 brief and front-loaded with the core action, followed by parameter explanations. It is efficient and does not waste words, though the 'Args' block is somewhat redundant given the schema already defines the parameters.

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

Completeness2/5

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

For a login tool with no annotations and low parameter schema coverage, the description is incomplete. It does not cover authentication flow, error cases, session behavior, or output format (although an output schema exists, the description could clarify its meaning). The agent lacks sufficient context to invoke the tool robustly.

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?

Schema description coverage is 0%, and the description only repeats the parameter names with basic labels ('email address', 'password'). No format requirements, constraints, or additional meaning are provided, leaving the agent to guess about valid input forms. The description fails to compensate for the schema gap.

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 (log in) and resource (Tiv Taam account), so the agent knows exactly what the tool does. However, it does not distinguish itself from sibling login tools like login_shufersal, leaving the agent to infer the differentiation from the name alone. This is clear but lacks sibling differentiation.

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?

There is no guidance on when to use this tool versus login_shufersal or login_status, nor any prerequisites or post-conditions. The description is purely functional with no contextual routing for the agent.

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

plan_recipe_ingredientsB
Parse a recipe and list the ingredients that will be searched for.

Args:
    recipe_text: Recipe text with ingredients list, or a URL to a recipe page.
ParametersJSON Schema
NameRequiredDescriptionDefault
recipe_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It states that it parses and lists ingredients, but does not disclose side effects, error handling, permissions, or whether it performs any network requests when given a URL. The phrase 'will be searched for' implies planning rather than execution, which is helpful but minimal.

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 two sentences, front-loading the purpose and then specifying the parameter. It is appropriately sized with no wasted words, though the 'Args:' formatting is somewhat boilerplate.

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 the tool's simplicity, one parameter, and an existing output schema (so return values need not be explained), the description covers the essential purpose and parameter semantics. It could be improved by relating the tool to sibling workflow tools, but it is largely complete for correct invocation.

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?

Schema description coverage is 0%, so the description must compensate for the single parameter. It does so by explaining that recipe_text accepts either raw recipe text with an ingredients list or a URL to a recipe page. This adds meaningful accepted-format semantics beyond the schema's bare string type.

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 states a specific verb and resource: 'Parse a recipe and list the ingredients that will be searched for.' This clearly conveys the tool's purpose. However, it does not differentiate from sibling tools such as compare_recipe or add_recipe_to_cart, so it falls short of a 5.

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?

There is no explicit guidance on when to use this tool versus alternatives like add_recipe_to_cart or compare_recipe. The implied usage is to parse a recipe before searching, but no context, exclusions, or alternatives are provided.

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

search_productsA
Search for products across all (or selected) grocery stores.

Args:
    query: Search term (English or Hebrew).
    stores: Limit to specific stores, e.g. ["tivtaam"] or ["shufersal", "tivtaam"].
    max_results: Max results per store (default: 8).
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
storesNo
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral disclosure. It discloses the per-store result cap behavior (max_results per store) and language support (English or Hebrew), which is useful. However, it doesn't describe pagination, result ordering, permission requirements, or error behavior for a multi-store query.

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?

Front-loaded one-line summary followed by compact per-parameter notes. No filler; each sentence serves a purpose.

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 3-param query tool with an output schema, the description covers the key non-obvious semantics (language, store examples, default, per-store cap). Missing only error/permission behavior and ordering, which are secondary given an output schema exists.

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 documents query (language support) and stores (example store names) and max_results (default and per-store semantics). It adds real value on stores and max_results semantics, but does not fully document the type-contract for query or the enumeration of valid store names.

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 (search) and resource (products) with a scope qualifier (across all or selected grocery stores). Distinguishes itself from cart/recipe siblings but not explicitly from compare_prices, which is a related but different action.

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?

The description implies usage through the store-limiter and per-store cap, but doesn't state when to use this versus compare_prices or plan_recipe_ingredients. No explicit exclusions or alternative routing.

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

set_preferencesB
Set your shopping preferences.

Args:
    preferred_store: Default store ("shufersal" or "tivtaam"). None = always compare.
    shopping_strategy: "cheapest" | "preferred_store" | "quality"
    prefer_organic: Prefer organic products when available.
    prefer_budget: Prefer sale/discounted products.
    prefer_store_brand: Prefer Shufersal-brand products.
    preferred_brands: Brand names to prefer (e.g. ["Tnuva", "Osem"]).
    banned_keywords: Words to avoid in product names.
    skip_pantry: Skip common pantry staples (salt, oil, spices) when parsing recipes.
    tivtaam_branch_id: Override Tiv Taam branch ID (default: 943).
ParametersJSON Schema
NameRequiredDescriptionDefault
skip_pantryNo
prefer_budgetNo
prefer_organicNo
banned_keywordsNo
preferred_storeNo
preferred_brandsNo
shopping_strategyNocheapest
tivtaam_branch_idNo
prefer_store_brandNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. It says nothing about persistence (are preferences saved across sessions?), authentication requirements (does it need login?), side effects, or reversibility. For a configuration tool that likely alters how other tools behave, this is a meaningful gap.

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 compact and front-loads the one-sentence summary before listing parameters. It avoids filler. The parameter list is dense but readable, though it could be slightly better organized with consistent punctuation or grouping.

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?

There is an output schema, so return values need not be explained. The description covers all 9 parameters with minimal context, but it lacks usage guidance and behavioral details that are important for a preferences-setting tool with no annotations. It is minimally adequate but has clear gaps.

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?

Schema description coverage is 0%, so the description's parameter explanations are the only source of meaning. It clarifies ambiguous parameters like shopping_strategy with enum values, preferred_store with allowed values, and gives examples for preferred_brands. However, not all parameters are fully explained (e.g., tivtaam_branch_id default is stated but purpose is vague), and the prose is somewhat cramped rather than thorough.

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 'Set your shopping preferences', a specific verb+resource that clearly distinguishes this configuration tool from sibling actions like login, search, or cart operations. There is no ambiguity about what the tool does.

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 on when to use this tool versus alternatives. It doesn't state whether preferences are persisted, whether they affect all subsequent sessions, or whether to call it before or after other tools. The agent must infer that setting preferences is a prerequisite for personalized shopping from the sibling tool names alone.

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

show_cartB
Show the current cart contents.

Args:
    store_id: "shufersal" or "tivtaam". If omitted, shows all carts.
ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 usefully discloses the default behavior ('if omitted, shows all carts'), which the schema's bare 'default: null' does not convey, but it omits any mention of read-only safety, auth/login prerequisites, or per-store availability.

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 core purpose is front-loaded in the first sentence and the parameter note is short. The raw 'Args:' block is slightly boilerplate but does not waste meaningful space.

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?

With an output schema present, return values need not be described, and the single optional parameter is well covered. The main gap is absence of any auth/prerequisite context, which login_* siblings suggest matters here.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it enumerates the accepted values ('shufersal' or 'tivtaam') and explains the omission semantics. It stops short of noting these are the only valid values or what happens with an unrecognized store_id.

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 ('current cart contents'), making the read intent unambiguous. However, it does not differentiate itself from sibling 'verify_cart', which an agent could plausibly confuse with viewing cart contents.

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?

Usage is only implied by the tool name; there is no explicit when-to-use guidance or routing to alternatives like verify_cart or add_to_cart. The description never states what condition should select this tool over its siblings.

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

verify_cartA
Re-check every item in the cart for live stock availability and automatically
swap out-of-stock items with the best available replacement.

Call this after adding all items to a cart to catch anything that went
out of stock between search and checkout.

Args:
    store_id: Which store cart to verify. Currently supports "tivtaam".
ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNotivtaam

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the whole burden, and it discloses the critical non-obvious side effect: items are silently auto-substituted with 'the best available replacement'. That is the key thing an agent must know. It does not mention auth requirements (login siblings exist) or what happens when no replacement is found, so it falls short of fully covering the mutation's edge cases.

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?

Two tight sentences front-load the purpose and the usage trigger, followed by a short Args block. Nothing is wasted, though the Args formatting is slightly verbose for a single parameter already defaulted in the schema.

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?

An output schema exists, so return values need not be described, and the one parameter is explained. The main remaining gap is auth context given the login_* siblings, but for a single-parameter cart tool the description is essentially complete.

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?

Schema coverage is 0%, so the description must compensate, and it does for the single parameter: it explains store_id selects 'which store cart to verify' and enumerates the currently supported value ('tivtaam'). That meaningfully exceeds the bare schema type/default.

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 ('Re-check'), a specific resource ('every item in the cart'), and a distinct behavior ('automatically swap out-of-stock items'). This clearly separates it from siblings like show_cart or add_to_cart.

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?

It gives explicit timing guidance: 'Call this after adding all items to a cart to catch anything that went out of stock between search and checkout.' That establishes the precise workflow stage, though it does not name a concrete alternative tool it should be chosen over or explicitly excluded against.

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. 14 tool updatesv0.1.0
    • First observedadd_recipe_to_cart
    • First observedadd_to_cart
    • First observedcheck_login
    • First observedcompare_prices
    • First observedcompare_recipe
    • First observeddiagnose
    • First observedlogin_shufersal
    • First observedlogin_status
    • First observedlogin_tivtaam
    • First observedplan_recipe_ingredients
    • First observedsearch_products
    • First observedset_preferences
    • First observedshow_cart
    • First observedverify_cart

TDQS

B3.4/5.0

Scored across 14 tools

Disambiguation4/5

Most tools target distinct actions (login, search, cart, recipes), but login_status, check_login, and diagnose all overlap in checking login/session status, and search_products vs compare_prices could be confused for price lookup. Descriptions help, but an agent may still hesitate between similar options.

Naming Consistency5/5

All tools use snake_case with a consistent verb_noun pattern (login_tivtaam, search_products, add_to_cart, etc.). The lone 'diagnose' is a minor deviation but falls within the same convention and remains clear.

Tool Count4/5

14 tools is at the upper end of the typical 3-15 range but still well-scoped for a multi-store grocery assistant with recipe support. Slight redundancy among the three login/session-checking tools makes the count feel marginally heavy.

Completeness3/5

Core operations like login, search, cart management, and recipe handling are covered, but there is no checkout or order-placement tool, and no way to remove or update cart items. These are notable gaps that could dead-end an agent's shopping workflow.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers