JENNi Shop — Local & Nationwide AI Commerce
Server Details
Search live local & nationwide retail stock, check prices, and run zero-click AI agent checkouts.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 5 tools
Each tool has a distinct purpose, but complete_checkout and start_checkout share the 'checkout' noun and could be mistaken for sequential steps rather than alternative modes. Descriptions clarify the difference, but the names alone may cause hesitation.
All tools follow a consistent snake_case verb_noun pattern (complete_checkout, find_stores, get_product, search_catalog, start_checkout), making the set highly predictable.
5 tools is well-scoped for a commerce server focused on discovery and checkout; each tool earns its place without redundancy or thin coverage.
The core shopping lifecycle (find stores, search products, get product details, initiate/complete checkout) is covered, but post-purchase operations like order status or cancellation are absent, which are minor gaps for the stated purpose.
Available Tools
5 toolscomplete_checkoutComplete agent checkoutAInspect
Execute zero-click autonomous checkout directly using a tokenized payment method (pm_*, virtual card token). Never send raw card numbers. Programmatically verifies stock, locks quote, and authorizes payment.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | Number of units to purchase (1-99). | |
| store_id | Yes | The store_id of an offer with is_eligible_checkout true. | |
| product_id | Yes | The exact variant product_id from get_product. | |
| shipping_address | Yes | ||
| payment_method_id | Yes | Tokenized payment method (Stripe pm_*, shared payment token, or single-use virtual card token). Never pass raw PAN/CVV. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| cart_id | Yes | |
| currency | Yes | |
| order_id | Yes | |
| total_cents | Yes | |
| checkout_url | Yes | |
| client_secret | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=false, but the description adds real substance beyond them: it discloses the authorization chain (verify stock, lock quote, authorize payment) and a hard security constraint ('Never send raw card numbers'). It stops short of stating irreversibility, charge semantics, or failure/rollback behavior.
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 short sentences, front-loaded with the action, then the accepted token form, then the internal steps. No filler; each clause carries information the agent needs before calling.
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 an output schema present, return values need no explanation, and annotations cover the safety profile. The description supplies the payment-token requirement and the multi-step side effects, leaving only edge behavior (declines, partial failure, whether the quote lock expires) unaddressed for a high-impact mutation.
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 80%, so the schema already documents most parameters including the pm_* token format it repeats in the description. The description adds little syntax or meaning beyond what the schema provides, so baseline 3 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?
States a specific verb+resource ('Execute ... checkout') and distinguishes itself from start_checkout by emphasizing it completes the purchase outright ('zero-click autonomous checkout'), plus enumerates the internal steps (stock verify, quote lock, payment auth). An agent can tell this apart from a flow-starting sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the payment-method constraint tells the agent a token must already exist, and the schema's store_id note ties usage to an eligible offer, but the description never names start_checkout as the prerequisite alternative or states when-not to call this. Adequate context, no explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_storesFind a shopARead-onlyIdempotentInspect
Local shops by name, near a US ZIP code or a served market. Read-only. Returns each shop's store_id (pass it to search_catalog to search only that shop), address and storefront url. A listing here proves no stock: search_catalog says what is on the shelf.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit US ZIP code: matching shops nearest it come first. | |
| name | Yes | Shop name or part of it, e.g. "Cheeky Monkey". | |
| limit | No | Shops to return (default 10). | |
| market | No | Market key, e.g. san-antonio-tx. Used when no zip is given. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| stores | Yes | |
| partial | Yes | True when not every listed shop could be compared. |
| location | No | |
| next_step | No | Present when no shop matched. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), and the description's 'Read-only' merely restates them. It does add a non-obvious behavioral caveat — that a returned listing does not imply the item is stocked — which prevents a real misinterpretation, but it says nothing about ordering, pagination, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: resource/scope first, then the safety note, then return fields and the sibling relationship. Every clause carries new information with no padding.
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 an output schema present and rich annotations, the description only needs to supply purpose, sibling routing, and semantic caveats — all of which it does. Nothing an agent needs to select and invoke this tool correctly is missing.
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 name, zip, market, and limit are all documented with examples and defaults. The description echoes the zip-or-market locator choice but adds no format, precedence, or constraint detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (find local shops) with the two supported locators (US ZIP code or served market), and immediately distinguishes itself from search_catalog. An agent can tell what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative tool explicitly and gives the handoff rule: pass store_id to search_catalog to scope a catalog search to one shop. It also sets a use boundary — 'A listing here proves no stock' warns the agent not to treat this as an inventory check, routing that need to search_catalog.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productProduct detailsARead-onlyIdempotentInspect
One product by the product_id search_catalog returned: the merchant's description and every shop's offer. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit US ZIP code, for local prices and distances. | |
| market | No | Market key, e.g. san-antonio-tx. Used when no zip is given. | |
| product_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| product | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the trailing 'Read-only' adds nothing. The only extra behavioral content is the return shape (merchant description + all shop offers), and with an output schema present even that is largely redundant. Adequate but adds little beyond structured metadata.
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?
A single sentence that front-loads the verb and the key input provenance, then enumerates the returned content. No filler, no restated title.
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 annotations covering the safety profile and an output schema covering return structure, the description only needs to establish purpose and input provenance, which it does. It leaves the zip/market trade-off entirely to the schema, which is acceptable but slightly thin for a 3-parameter 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?
Schema coverage is 67% because product_id has no schema description; the description fills that exact gap by specifying the product_id must come from a prior search_catalog result. zip and market are already documented in the schema, so the description's contribution is targeted and useful, though it adds no detail about how zip and market interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('get product') and precisely scopes the output: the merchant's description plus every shop's offer. It also explicitly traces its input origin ('the product_id search_catalog returned'), which cleanly separates it from the search_catalog sibling.
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 makes the calling context clear: this is the follow-up step that consumes a product_id produced by search_catalog, which is exactly the when-to-use guidance an agent needs. It stops short of naming when not to use it (e.g., bulk lookup) or what to do if no product_id is available, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_catalogSearch local shopsARead-onlyIdempotentInspect
Search products across the United States for any 5-digit US ZIP code (local delivery near physical shops plus nationwide ship-to-home fallback) or a served market (e.g. san-antonio-tx). Read-only. Returns products, the shops that hold them and, per offer, whether it can be ordered through JENNi. To buy, give the shopper the url: they pick size/colour and check out as a guest, no account. Each product lists at most 5 offers, orderable ones first; call get_product for all of them.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit US ZIP code the shopper is in, e.g. 78205. | |
| limit | No | Products to return (default 10). | |
| query | Yes | What the shopper wants, e.g. "running shoes". | |
| market | No | Market key, e.g. san-antonio-tx. Used when no zip is given. | |
| store_id | No | Only this shop's products: a store_id from find_stores or an offer. Pass its zip too. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| location | No | The place searched around; null for none. |
| products | Yes | |
| store_id | No | The one shop searched; null for all shops. |
| delivers_here | No | The market we deliver in at that location; null when we deliver in none. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real context beyond that: results are capped at 5 offers per product with orderable ones first, and offers indicate JENNi orderability. It doesn't mention rate limits or failure modes, but it discloses the important result-shaping behavior.
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?
Front-loads what is searched and where, then packages the return shape, the offer cap, and the checkout handoff. Dense but every sentence carries operational information; the checkout-flow sentence is slightly tangential to invocation.
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 an output schema present, return values need not be enumerated, yet the description still explains the offer ordering, the 5-offer cap, and the guest-checkout path via url. Combined with the get_product pointer, an agent has everything needed to call and act on results.
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 all five parameters are already documented in the schema. The description reinforces the ZIP format and the store_id/zip pairing, but adds little beyond the schema baseline, which warrants the standard 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search products) plus its scope: US ZIP codes or named markets. It also names the sibling it complements, get_product, for retrieving all offers, so an agent can separate the two without opening schemas.
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?
Explains the two entry modes (ZIP for local delivery plus nationwide fallback, or a market key) and points at get_product when all offers are needed. It does not state when to prefer find_stores or when a ZIP is unsuitable, so it stops short of explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_checkoutStart checkoutAIdempotentInspect
Call when the shopper has chosen to buy: the exact product_id (a variant's when it has sizes or colours), the store_id of an offer with is_eligible_checkout true, a quantity and their ZIP. Re-checks the offer at that quantity and returns checkout_url: JENNi checkout with that item added to the shopper's basket, where they enter email, name, address and card and see delivery, tax and the total; nothing is charged until they place the order. For a concierge offer it returns the product page, which places a shopper request as a pending hold during the shop's hours.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | Yes | 5-digit US ZIP code the order is delivered to, e.g. 78205. | |
| quantity | No | How many (default 1). | |
| store_id | Yes | store_id of an offer with is_eligible_checkout true, or a concierge offer. | |
| product_id | Yes | The exact item: a variant's product_id when it has variants. |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | No | |
| kind | Yes | |
| quantity | No | |
| next_step | Yes | |
| store_name | No | |
| unit_price | No | The shelf price the page shows; checkout states the total. |
| checkout_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that the offer is re-checked at the requested quantity, that the return is a checkout_url, that nothing is charged until the order is placed, and that a concierge offer follows a different path returning the product page and creating a pending hold during shop hours. That is real behavioral context an agent could not derive from the schema.
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?
Front-loads the trigger and the required identifiers, then the outcome, then the concierge exception. It is dense and slightly run-on in the second sentence, but nearly every clause carries information an agent needs.
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?
Covers the trigger, all required inputs, the outcome (checkout_url and the pending-hold exception) and the no-charge-until-placement guarantee. With an output schema present, return-value documentation is not owed, so nothing material is missing.
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 is already documented, and the description largely restates those same constraints (exact variant product_id, eligible store_id). The only added nuance is that quantity is re-validated against the offer, which is marginal. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (starting a checkout for a chosen purchase) and enumerates exactly what inputs identify the item and offer. It implicitly separates itself from complete_checkout by noting 'nothing is charged until they place the order', but never names that sibling, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger condition ('Call when the shopper has chosen to buy') plus preconditions on product_id (exact variant) and store_id (offer with is_eligible_checkout true). It stops short of naming alternatives or an explicit when-not-to-use case, e.g. what to do if the offer is not eligible.
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.
5 tool updates
- First observed
complete_checkout - First observed
find_stores - First observed
get_product - First observed
search_catalog - First observed
start_checkout
Related MCP Connectors
Search live store shelves, verify delivery windows, and run instant AI agent checkouts.
51Live prices, stock & price history across 100+ U.S. retailers for any AI agent.
AI-agent product catalog: search, lookup & purchase routing over verified merchant data.
Product price checks and affiliate link building for AI shopping agents.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search products across Amazon and live Shopify storefronts, vet merchants, build carts, and obtain checkout URLs via a pay-per-call API with no API key or signup.-
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to search and compare products across multiple retailers, build carts, and propose purchases that only a human can authorise, with a self-hosted control panel.-
- AlicenseAqualityAmaintenanceEnables AI agents to retrieve live product prices, stock, variants, and deal ratings from Shopify, WooCommerce, Walmart, eBay, and Amazon by pasting product links and asking about price, availability, or comparisons.422 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables real-time multi-merchant price comparison, coupon stacking, delivery-speed trade-offs, stock volatility tracking, and optimal purchase routing for cross-platform commerce inventory arbitrage.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.