Texas Grocery MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Texas Grocery MCPsearch for organic milk"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π Texas Grocery MCP
π€ 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-mcpFull Installation (Recommended) π
pip install texas-grocery-mcp[browser]
playwright install chromiumThis 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 |
| Default store ID | None |
| Redis cache URL | None (in-memory) |
| 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 attributesThe 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!
β‘ Fast Auto-Refresh (Recommended)
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 |
| Find stores by address |
| Set preferred store |
| Get current default store |
π Product Tools
Tool | Description |
| Search products with pricing |
| Search multiple products (up to 20) |
| Get detailed product info |
π Cart Tools
Tool | Description |
| Check authentication status |
| View cart contents |
| Add item (requires confirmation) |
| Bulk add multiple items |
| Remove item |
ποΈ Coupon Tools
Tool | Description |
| List available coupons |
| Search coupons by keyword |
| Clip a coupon |
| List your clipped coupons |
π Session Tools
Tool | Description |
| Check session health |
| Refresh/login session |
| Save credentials for auto-login |
| Logout |
π Documentation
π§ Troubleshooting Guide - Solutions for common issues
π€ Contributing - How to contribute
π Changelog - Version history
π Security - Security policy
π οΈ 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 toolscart_addADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sku_id | No | SKU ID (longer numeric ID). If not provided, uses product_id for both. | |
| confirm | No | Set to true to confirm the action | |
| quantity | No | Quantity to add | |
| product_id | Yes | HEB product ID (short numeric ID from search results) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_manyADestructive
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)
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | List of items to add. Each item must have: product_id (short ID), sku_id (full SKU), quantity (>=1). Maximum 100 items per call. | |
| confirm | No | Set to True to execute the bulk add. Default False shows preview of items to be added. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_retryADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sku_id | No | SKU ID | |
| confirm | No | Set to true to confirm | |
| quantity | No | Quantity to add | |
| product_id | Yes | HEB product ID | |
| auto_correct_ids | No | Attempt to auto-correct IDs if add fails |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_authARead-only
Check if authenticated for cart operations.
Returns authentication status and instructions if not authenticated. Use this before attempting cart operations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_getARead-only
Get current cart contents.
Returns all items in the cart with quantities and prices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_removeADestructive
Remove an item from the shopping cart.
Without confirm=true, returns a preview of the action. With confirm=true, executes the action.
| Name | Required | Description | Default |
|---|---|---|---|
| sku_id | No | SKU ID if known (will be looked up from cart if not provided) | |
| confirm | No | Set to true to confirm the action | |
| product_id | Yes | Product SKU/ID to remove |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_categoriesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_clipADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true to confirm the action | |
| coupon_id | Yes | Coupon ID to clip (from coupon_list or coupon_search) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_clippedARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum coupons to return |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_listARead-only
List available HEB digital coupons.
Returns coupons with discount details, descriptions, and expiration dates. Filter by category to find coupons in specific departments.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum coupons to return | |
| category | No | Filter by category name (e.g., 'pantry', 'health & beauty') or ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
coupon_searchARead-only
Search for HEB coupons by keyword.
Search for coupons by product name, brand, or discount type.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum coupons to return | |
| query | Yes | Search term (e.g., 'chips', 'dove', '25% off') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, and the description aligns with that by describing a safe read operation. No additional behavioral traits are disclosed beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core purpose immediately and efficiently adds clarifying detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with good schema and annotations, the description is adequate. It could mention that results include coupon details, but given the output schema exists, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for both parameters. The description adds marginal value by clarifying the scope of search terms (product name, brand, discount type), but this is largely redundant with schema examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for HEB coupons by keyword, specifying searchable attributes like product name, brand, or discount type. This distinguishes it from sibling tools like coupon_list, coupon_categories, and product_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via keyword search and gives examples, but it does not explicitly state when to use this tool versus alternatives like coupon_list or coupon_categories. No exclusionary guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_liveARead-only
Liveness probe - is the process running?
Returns a simple alive status. Use for Kubernetes liveness probes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_readyARead-only
Readiness probe - can the server handle requests?
Returns detailed component health. Use for Kubernetes readiness probes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_getARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | No | Store ID for pricing/availability. Uses default if not provided. | |
| product_id | Yes | Product ID from product_search results (e.g., '127074') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_searchBRead-only
Search for products at an HEB store.
Returns products matching the query with pricing and availability for the specified store.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return | |
| query | Yes | Search query (e.g., 'milk', 'chicken breast') | |
| fields | No | Field set to return: minimal (sku, name, price), standard (+brand, size, image), all (+nutrition) | |
| store_id | No | Store ID for pricing/availability. Uses default if not provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds that results include pricing and availability, which is useful but not extensive. No additional behavioral traits disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant words. Purpose front-loaded and immediately actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return format is covered. Parameters all documented. However, lacks information on pagination, default store behavior, and result ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; all parameters have descriptions. Description adds no new semantics beyond 'for the specified store' which aligns with store_id parameter. Baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'search' and resource 'products' with specific context 'HEB store'. Distinguishes generic search but does not differentiate from sibling product_search_batch for batch queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like product_search_batch or product_get. Lacks context on default store behavior or when store_id is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
product_search_batchARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | List of search queries (e.g., ['milk', 'eggs', 'bread']) | |
| store_id | No | Store ID for pricing/availability. Uses default if not provided. | |
| limit_per_query | No | Maximum results per query |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | ||
| headless | No | ||
| login_timeout | No | ||
| use_saved_credentials | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| password | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_instructionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_statusARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | Yes | Store ID to change to | |
| ignore_conflicts | No | Force store change even if cart has conflicts (items unavailable, price changes). Default False - will fail safely and report conflicts. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_defaultARead-only
Get the currently set default store.
Returns the default store ID if set, otherwise indicates no default.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
store_searchARead-only
Search for HEB stores near an address.
Returns stores sorted by distance, including store ID, name, address, and distance from the search location.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Address or zip code to search near | |
| radius_miles | No | Search radius in miles |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, and the description adds behavioral details about the output (sorted by distance, fields returned). No contradictions. No additional side effects or auth needs are mentioned, which is acceptable for a simple read-only search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the core purpose, and the second lists key output details. It is front-loaded, concise, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool, the description covers purpose, output format, and sorting. It lacks mention of pagination or maximum results, but given the output schema exists and annotations are complete, it is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The tool description does not add meaning beyond the schema; it only repeats the concept of searching near an address. The radius_miles parameter is not mentioned in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'HEB stores' with a specific scope 'near an address'. It distinguishes from siblings like store_get_default and store_change by specifying location-based search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to find stores by address, which provides clear context. However, it does not explicitly mention when not to use it or suggest alternative tools like store_get_default for getting the default store.
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.
25 tool updates
v0.1.2- First observed
cart_add - First observed
cart_add_many - First observed
cart_add_with_retry - First observed
cart_check_auth - First observed
cart_get - First observed
cart_remove - First observed
coupon_categories - First observed
coupon_clip - First observed
coupon_clipped - First observed
coupon_list - First observed
coupon_search - First observed
health_live - First observed
health_ready - First observed
product_get - First observed
product_search - First observed
product_search_batch - First observed
session_clear - First observed
session_clear_credentials - First observed
session_refresh - First observed
session_save_credentials - First observed
session_save_instructions - First observed
session_status - First observed
store_change - First observed
store_get_default - First observed
store_search
TDQS
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.
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.
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.
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
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
Manage your NanoCart store from any AI agent: products, orders, coupons, subscribers, reports.
Agent-native product catalog: 300M+ products, 150,000+ stores, deliver_to ranking.
AI-agent product catalog: search, lookup & purchase routing over verified merchant data.
AI shopping gateway for product search, inventory, carts, and merchant-hosted checkout.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides grocery price and nutritional information search capabilities, allowing AI agents to search for food products, compare prices, and analyze nutritional content across different grocery stores.1-
- AlicenseAqualityCmaintenanceEnables AI agents to search for products, manage shopping carts, and place grocery orders on Instacart using browser automation. It includes comprehensive tools for store discovery, product searching, and secure checkout with explicit user confirmation.11429MIT
- FlicenseNot gradedqualityBmaintenanceProvides tools for LLMs to search H-E-B stores, coupons, products, and weekly ads using reversed-engineered APIs.-
- AlicenseNot gradedqualityBmaintenanceEnables AI models to manage Kroger/QFC shopping lists, search products, and plan meals via the Kroger API.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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