Skip to main content
Glama

Raley

Named after someone who made grocery day feel less like a hostage negotiation with your own pantry.

Automated grocery shopping assistant with intelligent unit pricing, automatic coupon clipping, and an MCP server so your AI can argue with produce departments on your behalf.

What This Does

You tell Raley what you need. Raley finds the best deal, calculates unit pricing across every bizarre measurement the grocery industry has invented (per oz, per lb, per "each" — what even is an "each"), clips relevant coupons, and manages your cart. All through a CLI or Claude Desktop.

The grocery store API uses F5 bot detection, so Raley shells out to curl for TLS fingerprint evasion instead of using Python HTTP libraries that get immediately flagged. Yes, we're using subprocess.run(["curl", ...]) in 2026. Sometimes the unglamorous solution is the one that actually works.

Related MCP server: RappiMCP

Install

curl -fsSL https://raw.githubusercontent.com/johnzfitch/raley-bot/main/install.sh | bash

This clones the repo, sets up a Python venv, installs dependencies, and symlinks raley-bot to ~/.local/bin. Requires git and curl (installs uv automatically if missing).

Then log in:

raley-bot login

Manual Install

git clone https://github.com/johnzfitch/raley-bot.git
cd raley-bot

uv venv && source .venv/bin/activate
uv pip install -e ".[login]"

raley-bot login

CLI

raley search "organic spinach"    # Find products with unit pricing
raley history                     # Previously purchased items
raley offers                      # Available coupons
raley clip-all                    # Clip everything. All of it.
raley status                      # Session health check
raley orders                      # Order history
raley points                      # Something Extra balance

MCP Server (Claude Desktop / Claude Code)

Claude Desktop — add to ~/.config/Claude/claude_desktop_config.json (Linux) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

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

Claude Code — add to ~/.claude/settings.json:

{
  "mcpServers": {
    "raley-bot": {
      "command": "/path/to/raley-bot/.venv/bin/raley-mcp",
      "args": []
    }
  }
}

The install script configures these automatically.

Then talk to Claude like a normal person:

"Find me avocados, show me the best deal"
"Add organic spinach to my cart"
"What's in my cart?"
"Plan a grocery run: milk, eggs, bread, chicken thighs"

MCP Tools

Tool

What It Does

search

Find products with unit pricing and value analysis

add

Add items to cart (returns product name for confirmation)

remove

Remove items by SKU

cart

View cart (supports summary_only, save_to_file, limit)

offers

List, clip all, or sync coupons to local DB

plan

Parse freeform grocery lists, find best matches (does not auto-add)

price

Check price history from local tracking DB

orders

Order history with date range and spend totals

auth

Session status (no cookie values exposed)

Unit Pricing

Raley normalizes prices across every unit the grocery industry throws at you. A 6CT avocado bag at $4.99 becomes $0.83/unit. A 2lb chicken breast at $8.99 becomes $0.28/oz. Weight-based items show per-oz or per-lb depending on size. Liquids get per-ml. Count items get per-unit.

{
  "sku": "10101877",
  "name": "Hass Avocado, 6CT Bag",
  "price": "$4.99",
  "cents": 499,
  "per_unit": "$0.83"
}

Architecture

raley_assistant/
├── api.py           # Curl-based HTTP client (F5 evasion)
├── cli.py           # Click CLI with Rich tables
├── mcp_server.py    # MCP tools for Claude Desktop
├── unit_pricing.py  # Normalize $/oz, $/lb, $/unit, $/ml
├── cart_builder.py  # Freeform grocery list parsing
├── reasoning.py     # Purchase frequency analysis
├── db.py            # SQLite price history tracking
├── auth.py          # Browser-based login (Helium/Selenium)
└── cookies.py       # Session persistence

How the HTTP Client Works

The store's API sits behind F5 BIG-IP with browser fingerprinting. Python's requests and httpx get blocked because their TLS handshakes don't match real browsers. Rather than importing a Rust-based TLS emulation library (the previous approach using rnet, which created a phantom dependency that was never wired in), the client shells out to system curl which naturally produces a browser-like TLS fingerprint. Ugly, effective, zero exotic dependencies.

Data Storage

What

Where

Session cookies

~/.config/raley-assistant/cookies.json (mode 0600)

Price history DB

~/.local/share/raley-assistant/raley.db

Saved results

~/.local/share/raley-assistant/*.json (mode 0600)

Security Notes

Session cookies are written with 0600 permissions (owner read/write only). Cookie values are sanitized for header injection characters before being passed to curl. No credentials, tokens, or cookie values are ever logged, committed, or included in MCP tool responses. The auth tool explicitly returns session status without exposing cookie contents.

The search tool is read-only — it does not silently clip coupons or modify cart state. Write operations (add, remove, offers clip_all) are always explicit.

Rate limiting is applied to bulk operations (200ms between requests, 500ms every 10th request) to avoid triggering bot detection.

Preferences

Copy the example and edit to taste:

cp preferences.example.json ~/.config/raley-assistant/preferences.json

Format:

{
  "milk": {
    "brand": "Clover",
    "type": "whole",
    "size": "gallon"
  },
  "general": {
    "prefer_local": true,
    "organic_preference": "indifferent",
    "budget_target": 200
  }
}

Troubleshooting

Session expired?raley-bot login

Browser login not working? → Export cookies manually with a browser extension ("Cookie-Editor" or "EditThisCookie"), save as JSON, then raley login --file cookies.json

Database corrupted?rm ~/.local/share/raley-assistant/raley.db (rebuilds on next search)

Coupon clip limit? → Some manufacturer coupons have daily claim limits. This is server-side, not a bug.

Development

uv pip install -e ".[dev]"
pytest

Disclaimer

This is an unofficial tool not affiliated with or endorsed by the grocery chain. Use responsibly and in accordance with their Terms of Service. This project is named after a person, not a brand.

License

Unlicense

Available Tools

18 tools
addC

Add to cart. Need SKU and price_cents from search.

ParametersJSON Schema
NameRequiredDescriptionDefault
qtyNo
skuYes
centsYes

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description must fully disclose behavioral traits. It only states the action and input requirements, with no mention of side effects (e.g., whether existing cart items are updated or replaced), idempotency, authentication, or what the response contains. This is a significant gap for a mutating 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 very short and front-loaded, with only two sentences and no filler. The fragment 'Need SKU and price_cents from search' is terse and actionable, though slightly informal. It earns a high conciseness score for its compactness, though it sacrifices completeness.

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

Completeness2/5

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

Given the tool has no annotations, no output schema, and three parameters, the description is far too minimal. It doesn't explain what the function returns, how errors are handled, how 'qty' interacts with the cart, or any side effects. The mention of search is helpful, but overall the description is insufficient for an agent to confidently use the tool in all cases.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate by explaining all parameters. It explicitly mentions SKU and price_cents (mapped to 'cents'), which adds meaning to those two properties. However, the optional 'qty' parameter is completely unexplained, leaving a gap for an important aspect of the operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a verb and resource: 'Add to cart.' It also mentions the prerequisite inputs (SKU and price_cents), which helps differentiate it from other cart-related tools like 'remove' or 'cart_diff'. However, it doesn't explicitly state what kind of item is added (e.g., product, offer), leaving some ambiguity.

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

Usage Guidelines3/5

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

The description implies when to use the tool: after a search, since it says 'Need SKU and price_cents from search.' This gives a clear context. However, it does not provide explicit comparisons or exclusions relative to sibling tools like 'add_plan' or 'cart_diff', so the usage guidance is somewhat implicit rather than directive.

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

add_planA

Bulk add items to cart. Pass comma-separated 'sku:cents' or 'sku:cents:qty' pairs.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesComma-separated 'sku:cents' or 'sku:cents:qty' (e.g. '10101877:499,10102003:299:2')

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior, but it only explains input format. It does not mention side effects (e.g., whether items are appended or replace existing cart), prerequisites, or validation behavior. This is a gap for a mutation-like operation.

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 short sentences, front-loads the action ('Bulk add items to cart'), and provides a concrete format example in the second sentence. Zero wasted words.

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

Completeness4/5

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

For a simple single-parameter tool with no output schema, the description sufficiently explains input format and overall intent. Sibling differentiation is weak, but the simplicity of the tool makes the description mostly 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 coverage is 100% and the parameter description matches the tool description. The description adds no meaning beyond the schema's own 'items' string format, so the baseline score of 3 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 states a specific verb ('Bulk add') and resource ('items to cart'), clearly distinguishing it from siblings like 'remove' or 'cart'. The format details ('sku:cents' pairs) reinforce the tool's purpose.

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

Usage Guidelines3/5

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

The word 'Bulk' implies use for multiple items, but no explicit when-to-use or alternatives are provided. Sibling tools like 'add' and 'cart' suggest different use cases, yet the description does not guide the agent on choosing between them.

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

authA

Check authentication status (no cookie values exposed).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It explicitly states that no cookie values are exposed, providing a useful safety guardrail. It also implies a read-only operation through the verb 'check', giving basic transparency about 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.

Conciseness5/5

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

The description is a single, concise sentence that immediately conveys the tool's purpose. It includes a parenthetical safety note that adds important context without unnecessary length.

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

Completeness4/5

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

Given the tool's simplicity (zero parameters, no output schema, no annotations), the description is nearly complete. It covers the core function and a key behavioral safeguard. The only minor gap is not specifying the return format (e.g., boolean or object), but this is acceptable for a simple status check.

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 zero parameters, so the baseline for this dimension is 4 per the rubric. The description does not need to add parameter semantics since there are none, and the input schema correctly reflects this with an empty properties object.

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 function with a specific verb ('Check') and resource ('authentication status'). It is easily distinguished from sibling tools like deals, cart_diff, and search, none of which relate to authentication.

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 the tool should be used when the agent needs to determine if a user is authenticated. There are no explicit alternatives or exclusions, but the purpose is clear enough for the user to select it in appropriate contexts. No sibling tools offer similar functionality, so alternate guidance is not critical.

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

cartB

View cart. Supports summary_only, save_to_file, and limit options.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
save_to_fileNo
summary_onlyNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'View' implies a read-only operation, and mentioning 'save_to_file' hints at a potential side effect, but the description does not elaborate on the nature or consequences of this option. Additional details are lacking, so transparency is only partially provided.

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, with two short sentences and front-loaded purpose. The second sentence is somewhat boilerplate but not wasteful, though it could have been more informative.

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

Completeness2/5

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

For a simple tool with three optional parameters and no output schema, the description is insufficiently complete. It does not explain what the returned cart view contains, how parameters affect behavior, or any side effects of saving to a file, leaving the agent under-informed for correct invocation.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must compensate. However, it merely lists the parameter names ('summary_only, save_to_file, and limit') without explaining their meaning or behavior. This adds no semantic value beyond the schema's property names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'View cart' with a specific verb and resource, clearly distinguishing it from siblings like cart_diff, add, and remove. The purpose is immediately understandable and unambiguous.

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. It does not mention any prerequisites, exclusions, or comparisons with other tools, leaving the agent without context for selection.

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

cart_diffA

Compare a list of expected SKUs against the actual cart. Shows missing, extra, and quantity mismatches.

ParametersJSON Schema
NameRequiredDescriptionDefault
expected_skusYesComma-separated SKUs (or sku:qty pairs) that should be in cart

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavioral traits. It explains that the tool shows missing/extra/quantity mismatches, but does not explicitly state that it is read-only or non-mutating, nor does it cover edge cases or error handling. This is partial disclosure—some behavioral context is given, but not a full safety profile.

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 a single, front-loaded sentence that states the purpose and the key outputs with zero wasted words. It is exemplary in conciseness.

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 tool with one parameter and no output schema, the description covers the essential aspects: what it compares, what it reports, and the input format (implied via schema). It lacks explicit mutation status, but the comparison context makes it reasonably 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 description coverage is 100%, so the baseline is 3. The tool description adds little beyond the schema, just reinforcing that expected SKUs and quantity pairs are involved. The schema already documents the comma-separated format and sku:qty pairs, so the description doesn't add notable extra meaning.

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 uses a specific verb ('Compare') and clearly identifies the resource (expected SKUs vs. actual cart) and the output categories (missing, extra, quantity mismatches). This distinguishes it from sibling tools like 'cart', 'add', and 'remove'.

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 establishes a clear context for when to use the tool: whenever you need to verify that the cart matches an expected list of SKUs. It does not explicitly mention alternatives or exclusions, but the comparison purpose is evident, and no exclusions are needed for this straightforward tool.

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

dealsA

Best-value items this week: clipped coupons + sale prices + price history. Run after 'offers sync'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
gi_filterNoOnly show low-GI items (GI < 55)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden of transparency. It discloses that the tool uses clipped coupons, sale prices, and price history, and that results are time-bound to 'this week.' However, it does not mention read-only behavior, authentication needs, or how the dependency on 'offers sync' affects results.

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 short sentences, front-loaded with the value proposition and ending with a clear operational note. There is no unnecessary verbiage.

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

Completeness3/5

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

Given no output schema and no annotations, the description explains the core behavior and a dependency but omits return format, parameter semantics, and potential side effects. For a simple list tool, it is adequately complete but leaves gaps that could affect correct invocation.

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

Parameters2/5

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

Schema description coverage is 50%; gi_filter is described in the schema, but limit is undocumented. The description does not clarify the meaning of 'limit' or how it interacts with the listed data sources. The mention of 'price history' does not relate to parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: showing best-value items this week based on clipped coupons, sale prices, and price history. It distinguishes itself from the sibling 'offers' tool by emphasizing these unique data sources, though it lacks an explicit verb like 'get' or 'list'.

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 provides an explicit usage instruction: 'Run after offers sync.' This gives a clear temporal dependency and implies when to use it. It does not mention alternatives or exclusions, but the sequencing guidance is valuable.

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

favoritesC

Purchase history from 'previously purchased' API.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoproducts=by recency, brands=by product count, stats=summary, sync=refresh from API
limitNo

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description relies entirely on its own content for behavioral disclosure. It only states the data origin without mentioning any side effects, the meaning of 'sync' (refresh), or the nature of 'stats', leaving the agent uninformed about the tool's behavior.

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

Conciseness3/5

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

The description is a single concise sentence that quickly conveys the basic purpose. However, it lacks any structural breakdown or additional detail that would make the sentence more informative, making it adequately concise but not exemplary.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description must carry more weight, but it fails to explain the varying behaviors of the 'type' parameter or any return format. The tool appears too complex for such a brief description, leaving the agent with significant unknowns.

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

Parameters2/5

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

The schema documents 'type' with an enum and a short description, but 'limit' is left undocumented. The description adds no explanation for either parameter, especially 'limit', so it does not compensate for the schema's gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates that the tool provides purchase history from the 'previously purchased' API, specifying both the resource and the source. However, it does not distinguish this from sibling tools like 'orders' or 'deals', which may serve a similar purpose.

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?

The description gives no guidance on when to use this tool versus alternatives or how to choose among the 'type' values (products, brands, stats, sync). No context or exclusions are provided, leaving the agent without direction for appropriate usage.

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

knowledgeA

Search installed T1D reference books: GI tables, insulin math, carb counting, recipes, meal planning. Use when the user asks about nutrition science, insulin timing, or needs recipe ideas.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch terms (space separated). Empty string lists books.
bookNoSpecific book filename stem to search (optional, omit to search all)
limitNo
headingNoFetch full content of this heading (use after searching to get complete text)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the search action and domain, but does not explicitly state that the tool is read-only, nor does it mention any limitations, edge cases, or response behavior. Since it is a search tool, the core behavior is implied, but transparency is only adequate.

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 primary action and examples, followed by a concise usage pointer. Every word contributes to understanding, with no redundancy or filler.

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

Completeness4/5

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

For a read-only search tool with 4 params and no output schema, the description gives sufficient context for tool selection and invocation. It lacks details on return format and limit behavior, but the combination of purpose, usage guidance, and schema descriptions makes it reasonably complete.

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

Parameters4/5

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

Schema coverage is 75% (q, book, heading have descriptions; limit does not). The description adds valuable domain-specific vocabulary (GI tables, insulin math, carb counting) that helps the agent construct effective search terms for q, but does not clarify limit usage or other parameter nuances.

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 'Search installed T1D reference books' with specific topics (GI tables, insulin math, carb counting, recipes, meal planning), which precisely identifies the resource and differentiates it from generic sibling tools like 'search' or 'search_batch'.

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 explicit when-to-use guidance: 'Use when the user asks about nutrition science, insulin timing, or needs recipe ideas.' While it does not name alternative tools, the context strongly implies the intended use case and distinguishes it from general search.

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

memoryB

Read or write shopping memory: T1D config, notes, preferences. Persists across sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoField name for action=set, note key for action=note
limitNoFor action=get with section=notes: max notes to return
valueNoValue for action=set or action=note
actionYes
sectionNoFor get: filter to section. For set: target section.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only discloses that memory persists across sessions, but does not explain write semantics (overwrite vs. append), return values, or side effects of actions like 'set' and 'note'. This leaves significant behavioral ambiguity.

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 short sentences, front-loaded with the verb 'Read or write', and every phrase adds value. It is concise and free of filler.

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

Completeness2/5

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

Without annotations or an output schema, the description must explain behavior sufficiently. It fails to cover the three actions, the purpose of 'limit', or what get returns. For a 5-parameter tool with nuanced actions, this is incomplete.

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 80%, so the schema already documents most parameters. The description adds context about memory content (T1D config, notes, preferences) but does not clarify the meaning of the 'action' enum or the distinction between 'set' and 'note'. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads or writes shopping memory, specifying the domain (T1D config, notes, preferences) and persistence across sessions. It distinguishes itself from cart/deals tools but does not explicitly differentiate from similar storage tools like 'knowledge' or 'read_saved'.

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

Usage Guidelines3/5

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

The description implies usage for persistent memory storage but gives no explicit guidance on when to use this tool versus alternatives such as 'knowledge' or 'store'. There are no exclusionary statements or alternative tool references.

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

offersD

Coupons. action: list|clip_all|sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
catNo
limitNo
actionNo
save_to_fileNo

TDQS

D1.8/5.0
Behavior1/5

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

There are no annotations, so the description must disclose behavior. It only lists action names without explaining their effects, side effects, or whether any are destructive. 'clip_all' is ambiguous and potentially destructive, but nothing is clarified.

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

Conciseness2/5

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

The description is extremely short, but this is under-specification rather than effective conciseness. 'Coupons.' is a noun fragment, and the action list adds little context. It could be summarized in one proper sentence, but it lacks essential information.

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

Completeness1/5

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

With 4 parameters, no output schema, and no annotations, the description should explain the tool's behavior and parameters. It doesn't describe return values, effects, or how actions differ. This is completely inadequate for a multi-action tool.

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

Parameters1/5

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

The input schema has no descriptions for any parameters (0% coverage). The description only repeats the action enum, offering no explanation for 'cat', 'limit', 'save_to_file', or even what each action does. It fails to compensate for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Coupons. action: list|clip_all|sync' indicates the tool deals with coupons and lists three possible actions, but does not explicitly state what the tool does (e.g., 'lists coupons'). It provides a resource and an action enum but lacks a clear verb-oriented description, making it vague.

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 information is given about when to use this tool over siblings like 'deals' or 'offers'. There is no mention of prerequisites, contexts, or alternatives.

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

ordersD

Order history.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
save_to_fileNo
summary_onlyNo

TDQS

D1.5/5.0
Behavior1/5

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

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It reveals nothing about side effects, permissions, output format, or the meaning of parameters like save_to_file. The agent has no idea if this operation is safe to invoke or what consequences it may have.

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

Conciseness2/5

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

While the description is extremely brief, this is under-specification rather than conciseness. The single phrase 'Order history.' does not provide enough substance to be considered efficient; it is merely a placeholder that omits all necessary information.

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

Completeness1/5

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

The tool has four parameters, no output schema, and no annotations. The description is far too shallow to cover the behavioral and semantic complexity, leaving the agent without essential information for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any of the four parameters (days, limit, save_to_file, summary_only). The description adds no meaning beyond what bare parameter names convey, and even those names are ambiguous without further elaboration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Order history.' is a noun phrase that essentially restates the tool name 'orders' without any verb or action. It does not specify whether the tool fetches, lists, updates, or deletes order history, and provides no differentiation from sibling tools like 'deals' or 'cart'.

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?

The description offers no guidance on when to use this tool versus alternatives. There are no scenarios, prerequisites, or exclusions mentioned, leaving the agent without any contextual cues for tool selection.

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

planC

Parse grocery list, find matches. Does not add to cart.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
budgetNo
save_to_fileNo
summary_onlyNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses that it does not add to cart, which is a useful behavioral trait, but it doesn't disclose other side effects, whether it reads or writes elsewhere, or what it returns. The tool likely creates a plan (given sibling 'add_plan'), but no side effects are mentioned. This is insufficient transparency.

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 short sentences, front-loaded with the core action and a key constraint. No filler words; every word contributes. It's appropriately concise.

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

Completeness2/5

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

Given 4 parameters, no schema descriptions, no annotations, and no output schema, the description is far too sparse. It doesn't explain parameter meanings, return values, or usage scenarios, leaving the agent to guess. It covers only the most basic purpose.

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

Parameters1/5

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

Input schema has 4 parameters with zero descriptions, and the tool description mentions none of them. 'Items' is inferable as the grocery list, but budget, save_to_file, and summary_only are entirely unexplained. The description adds no parameter semantics over the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Parse grocery list, find matches. Does not add to cart.' This names a specific verb (parse/find) and resource (grocery list), with a scoping note ('does not add to cart') that differentiates from cart-modifying sibling tools. However, it doesn't explicitly distinguish from sibling 'search' or 'deals', so it's clear but not fully differentiated.

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

Usage Guidelines3/5

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

Usage is implied: it's for parsing a grocery list and finding matches, and it clarifies it won't add to cart. But it doesn't explicitly say when to use this over alternatives like 'search' or 'cart_diff', and doesn't mention conditions or exclusions beyond the cart note. Thus, implicit guidance only.

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

priceC

Price history by SKU, search local DB, or clear cache. Use clear=true when user changes store/delivery location.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNo
skuNo
clearNoClear cache: 'true' for products only, 'all' for everything

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that clearing cache is possible and gives a condition for it, but it does not mention whether searches are read-only, what side effects occur, or any auth/rate limits. The behavioral disclosure is minimal.

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

Conciseness3/5

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

The description is brief but the first sentence is a comma-separated list of actions that is somewhat cryptic and lacks clear structure. It is not redundant or verbose, but the clarity suffers from the abrupt listing of actions.

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

Completeness2/5

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

The tool has multiple behaviors (price history, search, cache clear) with no output schema and no annotations. The description does not explain return values, how the different modes interact, or provide enough context for correct invocation in varied scenarios. It is incomplete for a tool of this complexity.

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 only 33%, with q and sku lacking descriptions. The description adds meaning to 'sku' (price history by SKU) and 'clear' (cache clearing), and indirectly hints that 'q' relates to searching the local DB. However, it does not clarify the exact format or relationship between q and sku, so compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description lists three separate capabilities (price history by SKU, search local DB, clear cache) without a clear primary verb or focus. It identifies a resource (price history) but lacks a specific action verb and does not distinguish it from siblings like 'search' or 'offers'.

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?

The only usage guidance is 'Use clear=true when user changes store/delivery location,' which addresses a specific parameter condition but does not explain when to use this tool over alternatives such as search or offers. No clear when-to-use or when-not-to-use guidance is provided.

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

read_savedA

Read a previously saved result file (from save_to_file=true). Returns the JSON contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoFilename (e.g. 'cart-20260308-143022.json') or just the prefix ('cart')

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description carries the full burden. It discloses the source of files (previously saved via save_to_file=true), the return format (JSON contents), and implies a read-only nature. It does not cover error behavior for missing files, but for a simple read operation this is acceptable.

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, front-loaded with the action and resource, and contains no redundant words. The structure is clean and immediately informative.

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 tool with one parameter and no output schema, the description covers purpose, source, and return format. It lacks explicit mention of edge cases like file-not-found behavior, but is otherwise complete for its simplicity.

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?

The schema already fully documents the parameter 'filename' with examples and prefix support (100% coverage). The description adds no further parameter semantics, so the baseline score of 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 clearly states the tool reads a previously saved result file and returns its JSON contents. The reference to 'save_to_file=true' distinguishes it from sibling tools like 'memory' or 'search' and ties it to the saving mechanism.

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 context for when to use the tool: when you need to access a result file saved with save_to_file=true. It does not explicitly mention alternatives or exclusions, but the context effectively implies the tool's niche.

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

removeB

Remove from cart by SKU.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It only states the basic action ('remove from cart') but does not disclose important behaviors such as whether the operation is idempotent, what happens if the SKU is not found, or whether it removes all quantities or just one. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence: 'Remove from cart by SKU.' It has zero wasted words and clearly communicates the action and key parameter. It is appropriately concise for a tool with only one parameter.

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

Completeness3/5

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

The tool is simple with one required parameter and no output schema or annotations. The description covers the core purpose adequately, but it misses some context that would improve completeness, such as whether the operation is destructive irreversibly or how it handles missing SKUs. Still, it is minimally viable for a basic cart removal action.

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

Parameters2/5

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

The schema has a single parameter 'sku' with no description. The description mentions 'by SKU', which only restates the parameter name and confirms its role. It does not add meaningful details about the expected format, validation, or behavior with invalid input. Given the 0% schema description coverage, the description compensates minimally.

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 'Remove from cart by SKU' uses a specific verb 'remove' with a clear resource ('cart') and the key input method ('by SKU'). It clearly distinguishes from sibling tools like 'add' (the opposite action) and 'cart' (viewing the cart).

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

Usage Guidelines3/5

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

The usage is implied by the straightforward action: use this when you want to remove an item from the cart by its SKU. However, there is no explicit guidance about when not to use this tool or any mention of alternatives, such as 'add' or 'cart_diff'.

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

search_batchA

Search multiple products at once. Returns best match per query. Use instead of calling search N times.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesList of product queries (max 15)

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosure. It does reveal one key behavioral trait: 'Returns best match per query,' which informs the user of the output approach. However, it does not mention potential limitations (e.g., error handling, rate limits, ordering of results) or confirm safety (read-only implication), so there are gaps.

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 action and resource, and every word adds value. There is no fluff or repetition of schema information; it efficiently states purpose, result, and usage guidance in a compact form.

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 tool with a single parameter and no output schema, the description provides enough context: it states the batch nature, the per-query result behavior, and a reason to use it over an alternative. It does not describe the exact structure of the returned matches, but this is not necessary for such a simple tool.

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%, with the 'queries' parameter already described as 'List of product queries (max 15).' The description adds the semantic of searching multiple products at once, but this is largely implicit in the parameter type and tool name. It does not add format details beyond the schema, so the baseline of 3 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 uses the specific verb 'Search' and resource 'multiple products,' clearly distinguishing itself from the sibling 'search' tool by noting it processes multiple queries at once. The phrase 'Search multiple products at once' is a clear, specific action, and 'Returns best match per query' clarifies the result.

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 instead of calling search N times,' which directly contrasts with the alternative 'search' tool and gives clear context for when to prefer this batch version. However, it does not mention exclusions or when to use the single search tool instead, so it stops short of full 5.

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

storeB

View/change fulfillment store and delivery address. Prices and availability depend on the fulfillment store.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesinfo=current store, set=change delivery address, lookup=store details by number, addresses=list saved addresses
addressNoFor set: raw address fields (address1, city, state, postalCode, firstName, lastName, phone)
address_idNoFor set: address book ID to use as delivery address
store_numberNoFor lookup: store number (e.g. '313')

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds the useful fact that prices/availability depend on the store, but it does not disclose side effects of changing the delivery address, persistence of changes, or any required permissions. The description is too sparse for a tool with mutating actions like 'set'.

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 primary function, and avoids extraneous detail. Every sentence earns its place, with the second sentence providing important context about the impact of the store.

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

Completeness2/5

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

The tool has four distinct actions (info, set, lookup, addresses) and a nested address object, yet the description offers only a high-level summary. Without an output schema and with no annotations, the description should provide more detail on what each action returns and what side effects occur, but it does not.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a small amount of context by linking store/address to pricing and availability, but it does not elaborate on the parameters themselves. The schema already documents each parameter, so additional value is minimal.

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 function: 'View/change fulfillment store and delivery address.' It uses specific verbs (view/change) and a specific resource (fulfillment store and delivery address), distinguishing it from sibling tools like cart, price, and orders which deal with different concerns.

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

Usage Guidelines3/5

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

The description implies usage context by noting that 'Prices and availability depend on the fulfillment store,' suggesting this tool is relevant when store context matters. However, it does not explicitly state when to prefer this tool over siblings or when not to use it, so guidance remains implied rather than explicit.

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. 18 tool updatesv0.1.0
    • First observedadd
    • First observedadd_plan
    • First observedauth
    • First observedcart
    • First observedcart_diff
    • First observeddeals
    • First observedfavorites
    • First observedknowledge
    • First observedmemory
    • First observedoffers
    • First observedorders
    • First observedplan
    • First observedprice
    • First observedread_saved
    • First observedremove
    • First observedsearch
    • First observedsearch_batch
    • First observedstore

TDQS

C2.8/5.0
Disambiguation4/5

Most tools have clearly distinct purposes: search/add/remove/cart handle core shopping, while deals/offers, price, plan, orders, favorites, and knowledge cover different aspects. A few pairs overlap conceptually (search vs search_batch, add vs add_plan, deals vs offers), but descriptions clarify when to use each.

Naming Consistency2/5

Tool names mix single-word nouns (deals, cart, offers, store, memory, knowledge) with imperative verbs (search, add, remove, plan) and compound verb_noun forms (cart_diff, add_plan, search_batch). There is no consistent naming convention, which makes the set feel less predictable.

Tool Count4/5

With 18 tools, the server is on the heavier side but each tool addresses a specific need in the grocery shopping workflow. The count is justified given the breadth of features (product search, cart management, deals, price history, planning, memory, and account functions).

Completeness4/5

The tool surface covers core grocery tasks well: searching, adding/removing/viewing cart, bulk operations, deal retrieval, price history, order history, favorites, store selection, and user preferences. Minor gaps exist (e.g., no direct quantity update tool, no checkout/order placement), but they are workable and the domain is well represented.

Maintenance

ActivityInactive
ResponsivenessNo issues

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/johnzfitch/raley-bot'

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