# JENNi Shop — Local & Nationwide AI Commerce

> Search live local & nationwide retail stock, check prices, and run zero-click AI agent checkouts.

- name: io.github.jennipro-engineering/ghost-market-web
- version: 1.1.0
- connection class: unknown (deleted)
- trust: 77/100 flags: deleted
- quality: 89/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.jennipro-engineering%2Fghost-market-web
- tools: https://api.protogrid.dev/v1/servers/io.github.jennipro-engineering%2Fghost-market-web/tools

**Not classified yet.** The remote endpoints have not been probed successfully, or the listing has nothing to connect to.

## Connection (mcpServers)

_No connection block available._


## Trust

- hygiene: 100
- liveness: 100
- freshness: 0
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100%
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,769 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 4 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 1,769 tokens to load them all
- tool set hash: bed6b80a7a790c975dc32b1f41047eab
- tools last changed: 2026-10-20T15:55:20.463Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.jennipro-engineering/ghost-market-web.svg)](https://protogrid.dev/servers/io.github.jennipro-engineering/ghost-market-web)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-20 `get_product` changed (description, inputSchema, outputSchema) **meaning changed**
  - before: Complete canonical product facts, read-only. Nullable titles, empty images/offers and unknown stock remain visible. Discovery never authorizes checkout; completion is unavailable. Store filters are rejected; postal context never filters facts. Use search_catalog for product facts without store filters; it does not verify stock, price or delivery. Then call get_buying_options with the exact product_id, zip, quantity and fulfillment_mode. After the buyer chooses a returned offer with is_eligible_checkout true, use its store_id with start_checkout for direct checkout. An offer explicitly marked fulfillment concierge may also use start_checkout for a hosted request handoff even when that flag is false. Retain the exact buying context. A handoff does not reserve stock, create a durable quote or complete a purchase.
  - after: One product by the product_id search_catalog returned: the merchant's description and every shop's offer. Read-only. Before start_checkout, call get_buying_options with the exact product_id (a variant's product_id when it has sizes or colours), zip, quantity and fulfillment_mode, and use a store_id it returns.
- 2026-10-20 `find_stores` changed (title, description, outputSchema)
  - before: Read-only shop directory by name. A listing proves no stock, price, delivery or checkout eligibility. Use search_catalog for product facts without store filters; it does not verify stock, price or delivery. Then call get_buying_options with the exact product_id, zip, quantity and fulfillment_mode. After the buyer chooses a returned offer with is_eligible_checkout true, use its store_id with start_checkout for direct checkout. An offer explicitly marked fulfillment concierge may also use start_checkout for a hosted request handoff even when that flag is false. Retain the exact buying context. A handoff does not reserve stock, create a durable quote or complete a purchase.
  - after: Only when the shopper names a specific shop; for anything they want to buy, use search_catalog. Read-only shop directory by name. A listing proves no stock, price, delivery or checkout eligibility. Use search_catalog for product facts without store filters; it does not verify stock, price or delivery. Then call get_buying_options with the exact product_id, zip, quantity and fulfillment_mode. After the buyer chooses a returned offer with is_eligible_checkout true, use its store_id with start_checkout for direct checkout. An offer explicitly marked fulfillment concierge may also use start_checkout for a hosted request handoff even when that flag is false. Retain the exact buying context. A handoff does not reserve stock, create a durable quote or complete a purchase.
- 2026-10-20 `search_catalog` changed (title, description, inputSchema, outputSchema) **meaning changed**
  - before: Complete canonical product facts, read-only. Nullable titles, empty images/offers and unknown stock remain visible. Discovery never authorizes checkout; completion is unavailable. Store filters are rejected; postal context never filters facts. Use search_catalog for product facts without store filters; it does not verify stock, price or delivery. Then call get_buying_options with the exact product_id, zip, quantity and fulfillment_mode. After the buyer chooses a returned offer with is_eligible_checkout true, use its store_id with start_checkout for direct checkout. An offer explicitly marked fulfillment concierge may also use start_checkout for a hosted request handoff even when that flag is false. Retain the exact buying context. A handoff does not reserve stock, create a durable quote or complete a purchase.
  - after: 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. Before start_checkout, call get_buying_options with the exact product_id (a variant's product_id when it has sizes or colours), zip, quantity and fulfillment_mode, and use a store_id it returns.
- 2026-10-20 `find_stores` changed (outputSchema)
- 2026-10-19 `start_checkout` changed (annotations)
- 2026-10-19 `find_stores` changed (inputSchema)
- 2026-10-19 `get_buying_options` changed (outputSchema)
- 2026-10-19 `start_checkout` changed (description)
  - before: 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. After get_buying_options retain its exact quantity, ZIP and fulfillment_mode.
  - after: 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 or fulfillment concierge, 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 a product page handoff, where the shopper sets quantity and the page checks request availability. This handoff does not create a durable quote, reserve stock or purchase anything. After get_buying_options retain its exact quantity, ZIP and fulfillment_mode.
- 2026-10-19 `get_product` changed (description)
  - before: Complete canonical product facts, read-only. Nullable titles, empty images/offers and unknown stock remain visible. Discovery never authorizes checkout; completion is unavailable. Store filters are rejected; postal context never filters facts. Use search_catalog for product facts without store filters; it does not verify stock, price or delivery. Then call get_buying_options with the exact product_id, zip, quantity and fulfillment_mode. Only use a returned offer with is_eligible_checkout true and its store_id with start_checkout after the buyer chooses it.
  - after: Complete canonical product facts, read-only. Nullable titles, empty images/offers and unknown stock remain visible. Discovery never authorizes checkout; completion is unavailable. Store filters are rejected; postal context never filters facts. Use search_catalog for product facts without store filters; it does not verify stock, price or delivery. Then call get_buying_options with the exact product_id, zip, quantity and fulfillment_mode. After the buyer chooses a returned offer with is_eligible_checkout true, use its store_id with start_checkout for direct checkout. An offer explicitly marked fulfillment concierge may also use start_checkout for a hosted request handoff even when that flag is false. Retain the exact buying context. A handoff does not reserve stock, create a durable quote or complete a purchase.
- 2026-10-19 `find_stores` changed (description)
  - before: Read-only shop directory by name. A listing proves no stock, price, delivery or checkout eligibility. Use search_catalog for product facts without store filters; it does not verify stock, price or delivery. Then call get_buying_options with the exact product_id, zip, quantity and fulfillment_mode. Only use a returned offer with is_eligible_checkout true and its store_id with start_checkout after the buyer chooses it.
  - after: Read-only shop directory by name. A listing proves no stock, price, delivery or checkout eligibility. Use search_catalog for product facts without store filters; it does not verify stock, price or delivery. Then call get_buying_options with the exact product_id, zip, quantity and fulfillment_mode. After the buyer chooses a returned offer with is_eligible_checkout true, use its store_id with start_checkout for direct checkout. An offer explicitly marked fulfillment concierge may also use start_checkout for a hosted request handoff even when that flag is false. Retain the exact buying context. A handoff does not reserve stock, create a durable quote or complete a purchase.

Full history: https://api.protogrid.dev/v1/servers/io.github.jennipro-engineering%2Fghost-market-web/changes

## Remotes

_none_

## Packages

_none_

## Tools (0)

_none observed_
