Skip to main content
Glama
mgwalkerjr95

Texas Grocery MCP

by mgwalkerjr95

πŸ›’ Texas Grocery MCP

PyPI version License: MIT CI

πŸ€– Let AI do your grocery shopping! An MCP server that connects Claude to H-E-B grocery stores.

Search products, manage your cart, clip coupons, and more β€” all through natural conversation.

⚠️ This project is not affiliated with H-E-B. It uses unofficial web APIs and browser automation against HEB.com; use responsibly and ensure your usage complies with applicable terms and laws.


✨ Features

Feature

Description

πŸͺ Store Search

Find HEB stores by address or zip code

πŸ” Product Search

Search products with pricing and availability

πŸ›’ Cart Management

Add/remove items with human-in-the-loop confirmation

πŸ“‹ Product Details

Ingredients, nutrition facts, allergens, warnings

🎟️ Digital Coupons

List, search, and clip coupons to save money

πŸ”„ Auto Session Refresh

Handles bot detection automatically (~15 seconds)


Related MCP server: Instacart MCP Server

πŸ“¦ Installation

Quick Start

pip install texas-grocery-mcp
pip install texas-grocery-mcp[browser]
playwright install chromium

This enables fast auto-refresh (~15 seconds) using an embedded browser.

Prerequisites

For cart operations and session management, you'll also need Playwright MCP:

npm install -g @anthropic-ai/mcp-playwright

βš™οΈ Configuration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@anthropic-ai/mcp-playwright"]
    },
    "heb": {
      "command": "uvx",
      "args": ["texas-grocery-mcp"],
      "env": {
        "HEB_DEFAULT_STORE": "590"
      }
    }
  }
}

Environment Variables

Variable

Description

Default

HEB_DEFAULT_STORE

Default store ID

None

REDIS_URL

Redis cache URL

None (in-memory)

LOG_LEVEL

Logging level

INFO


🎯 Usage Examples

πŸͺ Finding a Store

User: Find HEB stores near Austin, TX

Agent uses: store_search(address="Austin, TX", radius_miles=10)

πŸ” Searching Products

User: Search for organic milk

Agent uses: store_change(store_id="590")
Agent uses: product_search(query="organic milk")

πŸ“‹ Getting Product Details

User: What are the ingredients in H-E-B olive oil?

Agent uses: product_search(query="heb olive oil")
Agent uses: product_get(product_id="127074")
# Returns: ingredients, nutrition facts, warnings, dietary attributes

The product_get tool returns:

  • πŸ₯— Ingredients - Full ingredient statement

  • πŸ“Š Nutrition Facts - Complete FDA panel

  • ⚠️ Safety Warnings - Allergen info and precautions

  • 🌿 Dietary Attributes - Gluten-free, organic, vegan, kosher, etc.

  • πŸ“ Store Location - Aisle or section

πŸ›’ Adding to Cart

User: Add 2 gallons of milk to my cart

Agent uses: cart_add(product_id="123456", quantity=2)
# Returns preview for confirmation

Agent uses: cart_add(product_id="123456", quantity=2, confirm=true)
# βœ… Added to cart!

🎟️ Clipping Coupons

User: Find coupons for cereal

Agent uses: coupon_search(query="cereal")
Agent uses: coupon_clip(coupon_id="ABC123", confirm=true)
# βœ… Coupon clipped!

πŸ” Session Management

HEB uses bot detection that expires every ~11 minutes. This MCP handles it automatically!

With [browser] support installed:

Agent uses: session_refresh()
# βœ… Completes in ~10-15 seconds

πŸ”‘ Auto-Login

Save your credentials once for automatic login:

Agent uses: session_save_credentials(email="you@email.com", password="...")
# Credentials stored securely in system keyring
# Future session refreshes will auto-login!

🧰 Available Tools

πŸͺ Store Tools

Tool

Description

store_search

Find stores by address

store_change

Set preferred store

store_get_default

Get current default store

πŸ” Product Tools

Tool

Description

product_search

Search products with pricing

product_search_batch

Search multiple products (up to 20)

product_get

Get detailed product info

πŸ›’ Cart Tools

Tool

Description

cart_check_auth

Check authentication status

cart_get

View cart contents

cart_add

Add item (requires confirmation)

cart_add_many

Bulk add multiple items

cart_remove

Remove item

🎟️ Coupon Tools

Tool

Description

coupon_list

List available coupons

coupon_search

Search coupons by keyword

coupon_clip

Clip a coupon

coupon_clipped

List your clipped coupons

πŸ” Session Tools

Tool

Description

session_status

Check session health

session_refresh

Refresh/login session

session_save_credentials

Save credentials for auto-login

session_clear

Logout


πŸ“š Documentation


πŸ› οΈ Development

# Clone repository
git clone https://github.com/mgwalkerjr95/texas-grocery-mcp
cd texas-grocery-mcp

# Install with dev dependencies
pip install -e ".[dev]"
playwright install chromium

# Run tests
pytest tests/ -v

# Linting & type checking
ruff check src/
mypy src/

🐳 Docker

docker-compose up --build

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    User's MCP Environment                    β”‚
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  🎭 Playwright MCP  β”‚    β”‚   πŸ›’ Texas Grocery MCP      β”‚ β”‚
β”‚  β”‚  (Browser Auth)     │───▢│   (Grocery Logic)           β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                        β”‚                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                         β”‚
                                         β–Ό
                                   🌐 HEB GraphQL API

πŸ“„ License

MIT Β© Michael Walker


Available Tools

25 tools
cart_addA
Destructive

Add an item to the shopping cart with verification.

Without confirm=true, returns a preview of the action. With confirm=true, executes the action and VERIFIES it worked.

IMPORTANT: Use both product_id and sku_id from product_search results:

  • product_id: shorter ID (e.g., '127074')

  • sku_id: longer ID (e.g., '4122071073')

Returns error if item wasn't actually added to cart.

ParametersJSON Schema
NameRequiredDescriptionDefault
sku_idNoSKU ID (longer numeric ID). If not provided, uses product_id for both.
confirmNoSet to true to confirm the action
quantityNoQuantity to add
product_idYesHEB product ID (short numeric ID from search results)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

The description adds detail beyond the `destructiveHint: true` annotation by explaining that `confirm=true` executes and verifies the addition, and returns an error if the item wasn't added. It does not mention other side effects (e.g., cart state changes), but the verification behavior is well described.

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 concise with a clear structure: main action, preview vs. execution, important parameter guidance, and error behavior. It is front-loaded and uses bullet points effectively without unnecessary text.

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

Completeness5/5

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

Given the tool's simplicity, the presence of an output schema (context signal), and the sibling tools, the description covers all necessary aspects: the action, verification, parameter relationships, and error handling. It is complete for an agent to use correctly.

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?

Although the schema already covers all parameters (100% coverage), the description adds critical value by explaining the relationship between `product_id` (short ID) and `sku_id` (long ID) and how they come from search results. This goes beyond the schema's individual descriptions.

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 clearly states the tool's action: 'Add an item to the shopping cart with verification.' It specifies the preview vs. execution behavior and distinguishes itself from siblings like `cart_add_many` and `cart_add_with_retry` by focusing on single-item addition with verification.

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

Usage Guidelines4/5

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

The description explains when to use `confirm` (preview vs. execution) and provides guidance on using both `product_id` and `sku_id` from search results. It does not explicitly state when to use alternatives like `cart_add_many`, but the context is clear enough for an agent to differentiate.

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

cart_add_manyA
Destructive

Add multiple items to cart with a single confirmation.

This is more efficient than calling cart_add multiple times and provides a single confirmation gate for the entire batch.

IMPORTANT: This operation uses STRICT success semantics. If ANY item fails to add, the entire operation is reported as a FAILURE. Items that were successfully added will remain in the cart, but you'll receive a clear list of which items failed.

Args: items: List of items, each with product_id, sku_id, and quantity confirm: Must be True to actually add items (human-in-the-loop safety)

Returns: On success: All items added with details On failure: List of failed items with reasons (successful items stay in cart)

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesList of items to add. Each item must have: product_id (short ID), sku_id (full SKU), quantity (>=1). Maximum 100 items per call.
confirmNoSet to True to execute the bulk add. Default False shows preview of items to be added.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations provide destructiveHint: true, indicating mutation. The description adds critical context: strict success semantics (failure of any item does not remove successfully added items) and the confirm parameter for human-in-the-loop safety. No contradiction with annotations.

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 well-structured with clear sections, but slightly verbose. Every sentence provides useful information, though it could be condensed without losing clarity. Overall effective.

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 presence of an output schema, the description does not need to explain return values in detail, but it summarizes success/failure. It covers parameters, behavior, and usage context, differentiating from sibling tools like cart_add_with_retry. Adequate for the tool's complexity.

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 100%, and the description adds meaning by specifying that items require product_id, sku_id, and quantity, with a max of 100 items. It also explains that confirm must be True to execute, defaulting to preview. This adds value beyond the schema descriptions.

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 clearly states 'Add multiple items to cart with a single confirmation,' which is a specific verb and resource. It distinguishes itself from sibling 'cart_add' by emphasizing efficiency and a single confirmation gate.

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

Usage Guidelines4/5

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

The description explains when to use this tool (multiple items, efficiency) and mentions the confirmation gate. It implies when not to use it (single items), but lacks explicit exclusions or alternatives beyond the implicit comparison with cart_add.

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

cart_add_with_retryA
Destructive

Add item to cart with automatic ID correction.

If the initial add fails due to ID format issues and auto_correct_ids=True, this will search for the product and retry with the correct IDs.

This is a more resilient version of cart_add that can recover from incorrect ID formats by looking up the product.

ParametersJSON Schema
NameRequiredDescriptionDefault
sku_idNoSKU ID
confirmNoSet to true to confirm
quantityNoQuantity to add
product_idYesHEB product ID
auto_correct_idsNoAttempt to auto-correct IDs if add fails

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses the retry mechanism and the condition for correction (initial failure due to ID format issues and auto_correct_ids=True). Annotations already indicate destructiveHint=true, so the description adds value by explaining the automatic correction behavior. However, it does not specify what happens if the retry fails or other side effects.

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

Conciseness4/5

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

The description is concise, front-loading the core function in the first sentence. It avoids unnecessary detail while covering the essential behavior. There is slight redundancy in retry explanation, but overall efficient.

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 existence of an output schema and full parameter descriptions, the tool description adequately covers the unique retry behavior. It relates to sibling tool cart_add and explains when the correction happens. It does not mention prerequisites like cart existence, but this is acceptable for a tool with clear context.

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 each parameter already has a description. The tool description adds context for the auto_correct_ids parameter and overall retry logic, but does not significantly enhance understanding of individual parameter semantics beyond the schema.

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 clearly states 'Add item to cart with automatic ID correction', specifying the verb (add) and resource (cart item). It distinguishes itself from sibling tools like cart_add and cart_add_many by highlighting the retry/correction feature.

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

Usage Guidelines4/5

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

The description explains that this tool is a more resilient version of cart_add that recovers from incorrect ID formats when auto_correct_ids=True. Although it doesn't explicitly state when not to use it, the context of automatic ID correction provides clear guidance for when this tool is appropriate.

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

cart_check_authA
Read-only

Check if authenticated for cart operations.

Returns authentication status and instructions if not authenticated. Use this before attempting cart operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, consistent with a read-only check. The description adds value by stating that it returns authentication status and instructions if not authenticated, which is beyond the annotation. No contradictions.

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 two sentences, front-loaded with the purpose, and provides essential usage guidance. Every word is necessary and efficient.

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

Completeness5/5

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

Given zero parameters and the existence of an output schema, the description fully covers what the tool does and what it returns. It is complete for a simple auth check tool.

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?

With no parameters and 100% schema coverage, the description has no need to explain parameters. The baseline for zero parameters is 4, and the description meets it.

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 clearly states the tool checks authentication for cart operations, using a specific verb and resource. It distinguishes itself from sibling cart operation tools and session_status by specifying 'for cart operations'.

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

Usage Guidelines4/5

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

The description explicitly advises 'Use this before attempting cart operations', providing clear context. However, it does not mention scenarios where this tool should not be used or suggest alternatives like session_status.

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

cart_getA
Read-only

Get current cart contents.

Returns all items in the cart with quantities and prices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description is consistent. It adds value by specifying that the return includes quantities and prices, beyond the annotation.

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 two concise sentences with no wasted words. It is front-loaded and efficient.

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

Completeness4/5

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

For a simple retrieval tool with no parameters and an output schema, the description is adequate. It could mention authentication implications, but overall it is complete enough.

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 has no parameters, and schema coverage is 100%. The description does not need to add parameter-level details; it suffices.

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 clearly states the tool retrieves the current cart contents, with specific mention of returning items, quantities, and prices. It is distinct from sibling tools like cart_add or cart_remove.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions.

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

cart_removeA
Destructive

Remove an item from the shopping cart.

Without confirm=true, returns a preview of the action. With confirm=true, executes the action.

ParametersJSON Schema
NameRequiredDescriptionDefault
sku_idNoSKU ID if known (will be looked up from cart if not provided)
confirmNoSet to true to confirm the action
product_idYesProduct SKU/ID to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds the preview behavior before confirmation, which is useful contextual information beyond the annotation.

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

Conciseness5/5

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

Two sentences, no unnecessary words, and the key information is front-loaded. Every sentence adds value.

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 output schema exists and the parameter descriptions are clear, the description is sufficient. It covers the main functionality and the confirm mode, though it omits error handling or edge cases.

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 coverage is 100%, so each parameter is already described in the schema. The description mentions the confirm behavior but does not add new semantic detail for parameters beyond what the schema provides.

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 clearly states it removes an item from the shopping cart, using a specific verb and resource. It distinguishes from sibling tools like cart_add and cart_get by implying the removal action.

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

Usage Guidelines4/5

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

The description explains the confirm parameter's two modes: preview without confirm and execution with confirm. It implicitly tells when to use the tool but does not explicitly mention when not to use it or alternatives.

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

coupon_categoriesA
Read-only

Get available coupon categories/departments.

Returns a list of categories with the number of coupons in each. Use category names with coupon_list to filter coupons.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations include readOnlyHint=true, and the description matches with 'Get'. It adds the return format (list with counts) and hints at usage, which complements the annotations without contradicting them.

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 two sentences, with the purpose front-loaded. Every sentence adds value: the first states the action, the second details the output and usage. No wasted words.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, no nested objects) and the presence of an output schema, the description fully explains what the tool does and how to use its result with a sibling tool (coupon_list). It is 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?

The tool has no parameters, so schema coverage is trivially 100%. The description does not need to add parameter info, and the baseline for zero parameters is 4.

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 clearly states 'Get available coupon categories/departments' with a specific verb and resource. It also explains the return value (list with counts), distinguishing it from sibling tools like coupon_list and coupon_search.

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

Usage Guidelines4/5

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

The description explicitly says 'Use category names with coupon_list to filter coupons', providing clear guidance on when to use this tool. It lacks explicit exclusion criteria but the usage context is well implied.

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

coupon_clipA
Destructive

Clip a coupon to your HEB account.

Without confirm=true, returns a preview of the action. With confirm=true, clips the coupon (requires authentication).

Clipped coupons automatically apply at checkout when you buy eligible items.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoSet to true to confirm the action
coupon_idYesCoupon ID to clip (from coupon_list or coupon_search)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint: true), the description adds important behavioral context: preview mode without confirm, authentication requirement for confirm, and automatic application at checkout. This fully informs the agent of the tool's effects and prerequisites.

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 concise sentences front-load the purpose and then explain the two modes and outcome. No redundant or extraneous information.

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

Completeness5/5

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

Given the tool's low complexity (2 parameters, one required) and the presence of an output schema, the description covers the essential workflow: preview vs. confirm, authentication, and automatic checkout application. It is complete for the agent to use correctly.

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?

The schema already describes parameters, but the description adds critical context: coupon_id should come from coupon_list or coupon_search, and confirm toggles between preview and actual clip. This meaningfully extends beyond the schema descriptions.

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 clearly states the verb 'Clip' and resource 'coupon to your HEB account', distinguishing it from sibling tools like coupon_list (listing) and coupon_search (searching). It also explains the dual behavior with preview mode.

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

Usage Guidelines4/5

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

The description clearly explains when to use confirm=false (preview) and confirm=true (clip, requires authentication). It does not explicitly state when not to use or mention alternatives, but the context from siblings and the explanation of preview versus actual action provides sufficient guidance.

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

coupon_clippedA
Read-only

List your clipped coupons.

Returns all coupons you've clipped to your HEB account. Clipped coupons automatically apply at checkout when you buy eligible items.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum coupons to return

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description carries a lower burden. It adds value by explaining that clipped coupons automatically apply at checkout and that it returns all clipped coupons. This contextualizes the behavior beyond the annotation.

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, front-loaded with the core purpose. Every sentence adds value without redundancy. Efficient and clear.

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 simplicity (one optional parameter, output schema exists, annotations present), the description is largely complete. It explains what clipped coupons are and their behavior at checkout. Could mention pagination or ordering, but not required for minimal viability.

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 coverage is 100% for the single 'limit' parameter, so baseline is 3. The description does not mention the limit parameter or add any additional meaning beyond the schema. No deduction needed, but no extra credit.

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 clearly states the tool lists clipped coupons (specific verb+resource). It distinguishes from siblings like coupon_clip, coupon_list, and coupon_search by focusing on already-clipped coupons. The additional context about auto-apply at checkout adds clarity.

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

Usage Guidelines4/5

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

The description implies usage when you want to view clipped coupons. It does not explicitly state when not to use or mention alternatives, but the purpose is clear enough given sibling names. Adding a note about using coupon_search for finding new coupons would improve guidelines.

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

coupon_listA
Read-only

List available HEB digital coupons.

Returns coupons with discount details, descriptions, and expiration dates. Filter by category to find coupons in specific departments.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum coupons to return
categoryNoFilter by category name (e.g., 'pantry', 'health & beauty') or ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so description adds value by specifying return fields (discount details, descriptions, expiration dates). No contradiction with annotations.

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 concise sentences, front-loaded with purpose, followed by return content and filtering capability. No unnecessary 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?

With output schema present, description adequately covers purpose, return content, and filtering. Could mention pagination implications of limit parameter, but not essential.

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 parameters are already documented. Description reinforces category filtering but adds no new semantic information beyond the schema.

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?

Description clearly states 'List available HEB digital coupons' with specific verb and resource. It distinguishes from siblings like coupon_search or coupon_clip by focusing on listing all coupons with details.

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?

Implies use for browsing or filtering coupons by category, but does not explicitly state when not to use or mention alternatives. No comparison to sibling tools like coupon_search for targeted searches.

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

health_liveA
Read-only

Liveness probe - is the process running?

Returns a simple alive status. Use for Kubernetes liveness probes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, indicating a safe read operation. Description adds that it returns a simple alive status and is for liveness probes, which is consistent and provides useful behavioral context without contradiction.

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 concise sentences, front-loaded with purpose and use case. No extraneous information.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, output schema exists), the description fully covers its behavior and usage context. It is complete for an agent to correctly invoke this tool.

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?

No parameters exist, so description does not need to add parameter information. Baseline for 0-parameter tools is 4, which is appropriate here.

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 clearly states it's a liveness probe that checks if the process is running and returns an alive status. It distinguishes from the sibling 'health_ready' by specifying 'liveness' and Kubernetes usage.

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?

Explicitly says 'Use for Kubernetes liveness probes.' This provides clear context for when to use, though it doesn't explicitly mention when not to use. Still highly useful.

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

health_readyA
Read-only

Readiness probe - can the server handle requests?

Returns detailed component health. Use for Kubernetes readiness probes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds that it returns detailed component health, which goes beyond the annotation. No contradictions.

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 concise sentences with no waste. Front-loaded with the core purpose. Every word earns its place.

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

Completeness5/5

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

For a simple health check tool, the description covers purpose, usage context, and return content. Output schema handles return values, so no 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?

No parameters, so the baseline score of 4 applies. The description correctly omits param details as none exist.

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?

Clearly states it is a readiness probe for server health, distinct from health_live. The verb 'readiness probe' and mention of Kubernetes give specific purpose.

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?

Explicitly recommends use for Kubernetes readiness probes. While it does not contrast with health_live, the guidance is targeted and actionable.

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

product_getA
Read-only

Get comprehensive details for a single product.

Returns detailed product information including:

  • Full description

  • Complete ingredients text

  • Safety/allergen warnings

  • Nutritional information (full FDA panel for packaged food)

  • Storage and preparation instructions

  • Dietary attributes (Gluten-Free, Organic, Vegan, etc.)

  • Store location (aisle or section)

Use this when you need more information than product_search provides, such as checking ingredients for dietary restrictions or allergens.

Args: product_id: The product ID from product_search results store_id: Optional store ID for store-specific pricing

Returns: Comprehensive product details or error response

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idNoStore ID for pricing/availability. Uses default if not provided.
product_idYesProduct ID from product_search results (e.g., '127074')

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, so the description does not need to emphasize safety. It adds that the tool returns an error response but no further behavioral traits. With annotations covering the safety profile, a 3 is appropriate as the description adds minimal behavioral context.

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 well-structured with a clear purpose, bullet-pointed return details, a usage note, and an 'Args' section. It is concise (5 short sentences for main body) and front-loaded.

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

Completeness5/5

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

The tool has an output schema, so return values are documented elsewhere. The description still enumerates return fields clearly and mentions error responses. It covers all necessary information for a retrieval tool with good annotations.

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 100%, so baseline is 3. The description adds context: product_id comes 'from product_search results' and store_id is for 'store-specific pricing'. This adds helpful context beyond the schema, justifying a 4.

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 clearly states 'Get comprehensive details for a single product' and lists specific attributes returned. It explicitly distinguishes itself from the sibling 'product_search' tool, saying 'Use this when you need more information than product_search provides.'

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use this tool (when more detail is needed than product_search) but does not explicitly list when not to use it or mention alternatives other than product_search.

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

product_search_batchA
Read-only

Search for multiple products at once.

More efficient than calling product_search multiple times. Handles throttling internally to prevent rate limiting.

Returns results for each query, with availability at the specified store.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesList of search queries (e.g., ['milk', 'eggs', 'bread'])
store_idNoStore ID for pricing/availability. Uses default if not provided.
limit_per_queryNoMaximum results per query

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. The description adds that it handles throttling internally and returns availability per query, disclosing important behavioral traits beyond the annotations.

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?

Four sentences with no wasted words. The first sentence states the core purpose, followed by efficiency, throttling, and output. All sentences add value.

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 presence of a comprehensive schema, output schema, and annotations, the description covers purpose, efficiency, throttling, and result nature. It could mention edge cases or batch behavior more, but is largely complete.

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 descriptions cover all parameters (100% coverage). The description adds only a minor note about 'availability at the specified store', which is already implied by schema descriptions. Baseline 3 is appropriate.

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 explicitly states 'Search for multiple products at once' and contrasts with 'product_search' by noting greater efficiency, making the purpose and differentiation clear.

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 suggests using this tool instead of calling product_search multiple times due to efficiency and internal throttling, but does not explicitly state when not to use it or provide alternative tools.

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

session_clearA

Clear saved session cookies.

Use this to log out or clear invalid session data. After clearing, you will need to run session_refresh again.

Note: This does NOT clear saved credentials. Use session_clear_credentials() to remove stored login credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: clears session cookies, does not clear credentials, and requires subsequent refresh. No contradictions.

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?

Description is concise with three short paragraphs. Main purpose is front-loaded, and every sentence adds value.

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

Completeness5/5

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

Given empty schema, no annotations, and output schema present, the description provides complete context: purpose, usage, limitations, and follow-up steps.

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?

No parameters exist (empty input schema), so baseline is 4. Description does not need to add param info.

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 clearly states it clears saved session cookies, logs out, or clears invalid session data. It distinguishes itself from sibling tool session_clear_credentials by noting it does not clear credentials.

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

Usage Guidelines5/5

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

Provides explicit when to use (log out or clear invalid session data) and when not (does not clear credentials). Also instructs to run session_refresh after clearing.

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

session_clear_credentialsA

Remove stored HEB login credentials.

After clearing, session_refresh will fall back to manual browser login when your session expires.

Returns: dict with success status

Note: This does NOT clear your current session. Use session_clear() to remove session cookies.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Without annotations, the description fully discloses behavior: it removes credentials, does not affect current session, changes session_refresh behavior, and returns a dict with success status.

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?

Every sentence provides useful information. No redundancy. Clear and well-structured with a note on side effects and distinction from sibling.

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

Completeness5/5

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

Given zero parameters and presence of output schema, the description covers all necessary context: purpose, side effects, return type, and usage guidance. Fully adequate.

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?

No parameters exist, so schema coverage is 100%. The description adds no param info, but none is needed. Baseline 4 applies.

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 clearly states the tool's action: 'Remove stored HEB login credentials.' It distinguishes itself from sibling tools like session_clear by noting that it does not clear the current session.

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

Usage Guidelines5/5

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

Explicitly explains when to use (to clear stored credentials) and when not (not for clearing session), and provides alternative (session_clear() for cookies). Also describes downstream effect on session_refresh.

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

session_refreshA

Refresh HEB session cookies and tokens.

Uses embedded browser when available (fast: ~10-15 seconds). If credentials are saved and login is required, attempts automatic login. Falls back to returning Playwright MCP commands if browser dependencies aren't installed.

Args: headless: Run browser without visible window (default True). Set to False if you need to complete a manual login (e.g., when your session has fully expired). timeout: Maximum time to wait for page load in milliseconds. Default 30000 (30 seconds). login_timeout: Maximum time to wait for manual login in milliseconds. Default 300000 (5 minutes). Only used when headless=False. use_saved_credentials: If True and credentials are stored, attempt automatic login when session is expired. Default True.

Returns: dict with one of these statuses: - {"status": "success", ...} - Login/refresh completed successfully - {"status": "human_action_required", "action": "login" | "captcha" | "2fa" | "waf", ...} Human intervention required (login form, CAPTCHA, 2FA, or a WAF/security interstitial). The browser remains open; complete the action, then call session_refresh() again. - {"status": "failed", ...} - Login/refresh failed with error details

Use this tool when:

  • session_status shows needs_refresh: true

  • session_status shows refresh_recommended: true

  • product_search returns security_challenge_detected: true

  • You want to proactively refresh before token expires

CAPTCHA/2FA handling:

  • When CAPTCHA or 2FA is detected, returns immediately with screenshot_path

  • The screenshot shows exactly what the user sees in the browser

  • Use the Read tool to view the screenshot and describe it to the user

  • The browser stays open - user solves CAPTCHA/enters code in that window

  • After solving, call session_refresh() again to continue the login flow

  • Repeat until status is "success" or "failed"

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
headlessNo
login_timeoutNo
use_saved_credentialsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: uses embedded browser, fallback to Playwright commands, headless mode, timeout handling, auto-login, return statuses (success, human_action_required, failed), and CAPTCHA/2FA handling with screenshot. No contradictions.

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 detailed but well-structured: introduction, args, returns, use cases, CAPTCHA/2FA handling. Every sentence adds value and it is front-loaded with the core purpose. Slightly lengthy but not wasteful.

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

Completeness5/5

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

Given 4 parameters, no annotations, and the existence of an output schema (described in Returns), the description covers parameter semantics, return values, usage scenarios, and edge cases (manual login, CAPTCHA). It is comprehensive and leaves no gaps.

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%, but the description compensates by explaining each parameter: headless (default True, set False for manual login), timeout (default 30000), login_timeout (default 300000, only when headless=False), use_saved_credentials (default True, auto-login). Adds meaning beyond the schema.

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 clearly states the tool refreshes HEB session cookies and tokens. The verb 'refresh' and resource 'session cookies and tokens' are specific, and it distinguishes from sibling tools like session_status and session_clear by focusing on the refresh action.

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

Usage Guidelines4/5

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

The description explicitly lists conditions for use (e.g., session_status shows needs_refresh, refresh_recommended, product_search returns security_challenge_detected) and provides guidance on handling CAPTCHA/2FA. It does not explicitly state when not to use, but the context is clear.

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

session_save_credentialsA

Save HEB login credentials for automatic login.

Credentials are stored securely using:

  • OS keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service)

  • Encrypted file fallback when keyring is unavailable

After saving, session_refresh will automatically use these credentials when your session expires, eliminating manual browser login.

Args: email: Your HEB.com account email address password: Your HEB.com account password

Returns: dict with success status and storage method used

Security notes:

  • Credentials are encrypted at rest

  • Password is never logged or exposed in output

  • Use session_clear_credentials() to remove stored credentials

Example: session_save_credentials("user@example.com", "mypassword") # Now session_refresh will auto-login when session expires

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
passwordYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

No annotations provided, but description fully discloses storage methods (OS keyring, encrypted fallback), security (encrypted at rest, never logged), and return type. Highly transparent.

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

Conciseness5/5

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

Well-structured with sections (Args, Returns, Security notes, Example), front-loaded with purpose, every sentence adds value.

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

Completeness5/5

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

Given no annotations and presence of output schema, description covers behavior, parameters, return, security, and links to sibling tools. Fully complete.

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 coverage is 0%, but description adds full meaning: names, types, and example usage for both email and password, compensating completely.

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 clearly states the action 'Save HEB login credentials' and the resource, distinguishing it from sibling tools like session_clear_credentials.

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 explains that saving credentials enables automatic login via session_refresh, and mentions session_clear_credentials for removal. Could be more explicit about when not to use, but clear overall.

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

session_save_instructionsA
Read-only

Get instructions for saving browser session cookies.

Call this to get step-by-step instructions for authenticating via Playwright MCP and saving the session for fast API access.

For automatic session extraction, use session_refresh instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true. Description adds context that it returns instructional text, consistent with read-only nature. No contradictory information.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then usage guidance. No wasted words, every sentence adds value.

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

Completeness5/5

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

Given zero parameters and presence of output schema, description explains the return value clearly ('step-by-step instructions') and provides usage guidance and alternative. Fully adequate.

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?

No parameters exist, schema coverage is 100% (trivially). Description does not need to add parameter details beyond schema. Baseline 4 is appropriate.

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?

Description uses a specific verb 'Get' and resource 'instructions for saving browser session cookies', and distinguishes from sibling session_refresh by stating that session_refresh is for automatic extraction.

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

Usage Guidelines5/5

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

Explicitly states 'Call this to get step-by-step instructions' and provides an alternative: 'For automatic session extraction, use session_refresh instead.'

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

session_statusA
Read-only

Get current session status including token lifecycle and credential storage.

Returns comprehensive session information:

  • authenticated: Whether session is valid

  • needs_refresh: Whether refresh is required now (token expired)

  • refresh_recommended: Whether proactive refresh is advised (< 4 hours remaining)

  • time_remaining_hours: Hours until token expires

  • expires_at: ISO timestamp of expiration

  • message: Human-readable status

  • credentials_stored: Whether HEB credentials are saved for auto-login

Use this to check session health before operations or to decide when to proactively refresh.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations provide readOnlyHint=true, and the description adds detailed behavioral context about what information is returned (token lifecycle, credential storage status, etc.), fully explaining the non-destructive read operation.

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 well-structured with a summary line and bullet points, but the bullet points listing each field are somewhat redundant given the output schema exists. Still efficient and front-loaded.

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

Completeness5/5

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

Given zero parameters, the description comprehensively covers the tool's purpose, output fields, and usage context. The presence of an output schema does not reduce the need for description, and the description adds value beyond schema field names by explaining semantics like 'refresh_recommended: Whether proactive refresh is advised (< 4 hours remaining)'.

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?

No parameters exist (schema coverage 100%), so the description naturally covers all semantics by explaining the output. No additional parameter meaning is needed.

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 clearly states the tool gets current session status, listing all relevant fields (authenticated, needs_refresh, etc.) and distinguishing it from sibling tools like session_refresh and session_clear.

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

Usage Guidelines5/5

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

Explicit guidance: 'Use this to check session health before operations or to decide when to proactively refresh.' This tells the agent when to use it and implies contexts like post-authentication or before expensive operations.

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

store_changeA

Change the active store for HEB operations.

When authenticated: Changes the store on HEB.com via their API with verification. When not authenticated: Sets a local default for product searches.

The store change is VERIFIED by checking the cart's actual store after the mutation. This ensures we never return success when the store didn't actually change (e.g., due to cart conflicts).

Args: store_id: The store ID to change to ignore_conflicts: If True, force store change even if cart has items unavailable at the new store or with price changes. Default False.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idYesStore ID to change to
ignore_conflictsNoForce store change even if cart has conflicts (items unavailable, price changes). Default False - will fail safely and report conflicts.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses verification steps, auth-dependent behavior, and conflict handling, providing comprehensive behavioral insight.

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 well-structured and informative, though slightly verbose in places. It efficiently communicates key details without unnecessary fluff.

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

Completeness5/5

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

Given the tool's complexity and the presence of an output schema, the description covers all essential aspects: auth states, verification, conflict handling, and parameter usage, leaving no 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 coverage is 100%, but the description adds value by elaborating on the effect of ignore_conflicts and the verification process, going beyond the schema basics.

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 explicitly states 'Change the active store for HEB operations' and distinguishes between authenticated and unauthenticated scenarios, differentiating it from sibling tools like store_search and store_get_default.

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

Usage Guidelines4/5

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

The description clearly explains when to use the tool to change the active store and details the ignore_conflicts parameter behavior. It does not explicitly state when not to use it, but the context is adequate.

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

store_get_defaultA
Read-only

Get the currently set default store.

Returns the default store ID if set, otherwise indicates no default.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description adds beyond readOnlyHint by specifying the return behavior: returns default store ID if set, otherwise indicates no default. This provides clear behavioral insight.

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 two sentences, directly stating the main action and the return behavior. No extraneous words, and the key information is front-loaded.

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

Completeness5/5

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

Given the tool has 0 parameters and an output schema, the description adequately explains the return value (default store ID or indication of absence). No additional context is needed.

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?

No parameters exist, so the description is not required to explain them. The baseline for 0-param tools is 4, and the description adds no parameter information because none is needed.

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 clearly states 'Get the currently set default store' which is a specific verb+resource pair. It is distinct from siblings like store_search and store_change which are search and mutation tools.

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

Usage Guidelines4/5

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

The description clearly indicates the purpose, but does not explicitly state when to use this tool versus alternatives (e.g., store_search). However, the context of siblings and the straightforward action make usage clear.

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. Dates show when Glama detected each change.

  1. 25 tool updatesv0.1.2
    • First observedcart_add
    • First observedcart_add_many
    • First observedcart_add_with_retry
    • First observedcart_check_auth
    • First observedcart_get
    • First observedcart_remove
    • First observedcoupon_categories
    • First observedcoupon_clip
    • First observedcoupon_clipped
    • First observedcoupon_list
    • First observedcoupon_search
    • First observedhealth_live
    • First observedhealth_ready
    • First observedproduct_get
    • First observedproduct_search
    • First observedproduct_search_batch
    • First observedsession_clear
    • First observedsession_clear_credentials
    • First observedsession_refresh
    • First observedsession_save_credentials
    • First observedsession_save_instructions
    • First observedsession_status
    • First observedstore_change
    • First observedstore_get_default
    • First observedstore_search

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct function: sessions, coupons, cart, products, stores, and health. Even within groups like cart_add variants, descriptions clarify differences. Overlaps are minimal.

Naming Consistency3/5

Tool names mix verb_noun (store_search, product_get), noun_noun (coupon_categories), and adjective_noun (health_live). While readable, there is no consistent pattern across the set.

Tool Count4/5

25 tools cover multiple domains (sessions, coupons, cart, products, stores, health) without feeling bloated. The count is at the higher end but still reasonable for the scope.

Completeness4/5

The tool surface covers core grocery operations: product discovery, store selection, coupon management, cart manipulation, and session handling. Missing checkout or order history, but pre-checkout coverage is solid.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mgwalkerjr95/texas-grocery-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server