JENNi Shop — Local & Nationwide AI Commerce

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

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
91%
命名品質
100%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~4,022Token(工具定義)
~7.7 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.14%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "ghost-market-web": {
      "url": "https://shop.jennipro.com/mcp"
    }
  }
}

遠端端點

https://shop.jennipro.com/mcpstreamable-http

它能做什麼

工具清單

工具(5)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢search_catalog(query, product_id, gtin, brand, store_id, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 256,
      "description": "Optional title, brand, UPC or GTIN keyword. Omit to enumerate approved root catalog facts."
    },
    "product_id": {
      "type": "string",
      "maxLength": 128
    },
    "gtin": {
      "type": "string",
      "pattern": "^[0-9]{8,14}$"
    },
    "brand": {
      "type": "string",
      "maxLength": 256
    },
    "store_id": {
      "type": "string",
      "description": "Unsupported for catalog facts; nonempty store filters are rejected."
    },
    "store_ids": {
      "type": "array",
      "maxItems": 0,
      "items": {
        "type": "string"
      },
      "description": "Empty normalizes to absent; store filtering is unsupported."
    },
    "zip": {
      "type": "string",
      "pattern": "^[0-9]{5}(?:-[0-9]{4})?$",
      "description": "Optional echoed caller context only; never filters facts."
    },
    "postal_code": {
      "type": "string",
      "pattern": "^[0-9]{5}(?:-[0-9]{4})?$",
      "description": "Optional echoed caller context only; never filters facts."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20
    },
    "cursor": {
      "type": "string",
      "maxLength": 8192,
      "description": "Confidential opaque upstream continuation; forward unchanged with the same selectors and limit."
    }
  },
  "required": [],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "const": "canonical_discovery"
    },
    "contract_version": {
      "type": "string",
      "const": "catalog_facts_v1"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "title",
          "brand",
          "upc",
          "gtin",
          "category",
          "images",
          "offers",
          "stock_state",
          "checkout_eligible"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "upc": {
            "type": [
              "string",
              "null"
            ]
          },
          "gtin": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name"
            ],
            "properties": {
              "id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "images": {
            "type": "array",
            "maxItems": 0,
            "items": {
              "type": "string"
            }
          },
          "offers": {
            "type": "array",
            "maxItems": 0,
            "items": {
              "type": "string"
            }
          },
          "stock_state": {
            "type": "string",
            "const": "unknown"
          },
          "checkout_eligible": {
            "type": "boolean",
            "const": false
          }
        }
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    },
    "exhausted": {
      "type": "boolean"
    },
    "catalog_authority": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "version",
        "policy_hash"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "jenni_catalog_facts"
        },
        "version": {
          "type": "string",
          "const": "2026-10-16.v1"
        },
        "policy_hash": {
          "type": "string",
          "const": "1340ae7f5b87d590b5107d90c6ace904a0b38419101e211f39f5bbaa84e704a1"
        }
      }
    },
    "offer_policy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "state"
      ],
      "properties": {
        "state": {
          "type": "string",
          "const": "not_requested"
        }
      }
    },
    "requested_context": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "postal_code"
      ],
      "properties": {
        "postal_code": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[0-9]{5}(?:-[0-9]{4})?$"
        }
      }
    },
    "source_observed_at": {
      "type": "string",
      "format": "date-time"
    },
    "snapshot_semantics": {
      "type": "string",
      "const": "live_keyset"
    }
  },
  "required": [
    "mode",
    "contract_version",
    "items",
    "next_cursor",
    "exhausted",
    "catalog_authority",
    "offer_policy",
    "requested_context",
    "source_observed_at",
    "snapshot_semantics"
  ],
  "additionalProperties": false
}
🟢find_stores(name, zip, market, limit)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Shop name or part of it, e.g. \"Cheeky Monkey\"."
    },
    "zip": {
      "type": "string",
      "description": "5-digit US ZIP code: matching shops nearest it come first."
    },
    "market": {
      "type": "string",
      "description": "Market key, e.g. san-antonio-tx. Used when no zip is given."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Shops to return (default 10)."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "location": {
      "type": [
        "string",
        "null"
      ]
    },
    "partial": {
      "type": "boolean",
      "description": "True when not every listed shop could be compared."
    },
    "next_step": {
      "type": "string",
      "description": "Present when no shop matched."
    },
    "stores": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "store_id": {
            "type": "string"
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "distance_miles": {
            "type": [
              "number",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "The shop's page on the storefront."
          }
        },
        "required": [
          "store_id",
          "name",
          "address",
          "distance_miles",
          "url"
        ]
      }
    }
  },
  "required": [
    "name",
    "stores",
    "partial"
  ]
}
🟢get_product(product_id, zip, postal_code)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "maxLength": 128
    },
    "zip": {
      "type": "string",
      "pattern": "^[0-9]{5}(?:-[0-9]{4})?$",
      "description": "Optional echoed caller context only; never filters facts."
    },
    "postal_code": {
      "type": "string",
      "pattern": "^[0-9]{5}(?:-[0-9]{4})?$",
      "description": "Optional echoed caller context only; never filters facts."
    }
  },
  "required": [
    "product_id"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "mode": {
      "type": "string",
      "const": "canonical_discovery"
    },
    "contract_version": {
      "type": "string",
      "const": "catalog_facts_v1"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "title",
          "brand",
          "upc",
          "gtin",
          "category",
          "images",
          "offers",
          "stock_state",
          "checkout_eligible"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "upc": {
            "type": [
              "string",
              "null"
            ]
          },
          "gtin": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name"
            ],
            "properties": {
              "id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "images": {
            "type": "array",
            "maxItems": 0,
            "items": {
              "type": "string"
            }
          },
          "offers": {
            "type": "array",
            "maxItems": 0,
            "items": {
              "type": "string"
            }
          },
          "stock_state": {
            "type": "string",
            "const": "unknown"
          },
          "checkout_eligible": {
            "type": "boolean",
            "const": false
          }
        }
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    },
    "exhausted": {
      "type": "boolean"
    },
    "catalog_authority": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "version",
        "policy_hash"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "const": "jenni_catalog_facts"
        },
        "version": {
          "type": "string",
          "const": "2026-10-16.v1"
        },
        "policy_hash": {
          "type": "string",
          "const": "1340ae7f5b87d590b5107d90c6ace904a0b38419101e211f39f5bbaa84e704a1"
        }
      }
    },
    "offer_policy": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "state"
      ],
      "properties": {
        "state": {
          "type": "string",
          "const": "not_requested"
        }
      }
    },
    "requested_context": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "postal_code"
      ],
      "properties": {
        "postal_code": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[0-9]{5}(?:-[0-9]{4})?$"
        }
      }
    },
    "source_observed_at": {
      "type": "string",
      "format": "date-time"
    },
    "snapshot_semantics": {
      "type": "string",
      "const": "live_keyset"
    }
  },
  "required": [
    "mode",
    "contract_version",
    "items",
    "next_cursor",
    "exhausted",
    "catalog_authority",
    "offer_policy",
    "requested_context",
    "source_observed_at",
    "snapshot_semantics"
  ],
  "additionalProperties": false
}
🟡start_checkout(product_id, store_id, quantity, fulfillment_mode, zip)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "description": "The exact item: a variant's product_id when it has variants."
    },
    "store_id": {
      "type": "string",
      "description": "store_id of an offer with is_eligible_checkout true, or a concierge offer."
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 99,
      "description": "How many (default 1)."
    },
    "fulfillment_mode": {
      "type": "string",
      "enum": [
        "local_delivery",
        "ship_to_home"
      ],
      "description": "Retain the mode chosen from get_buying_options."
    },
    "zip": {
      "type": "string",
      "description": "5-digit US ZIP code the order is delivered to, e.g. 78205."
    }
  },
  "required": [
    "product_id",
    "store_id",
    "zip",
    "quantity",
    "fulfillment_mode"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "basket",
        "concierge_request"
      ]
    },
    "checkout_url": {
      "type": "string"
    },
    "item": {
      "type": "string"
    },
    "store_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "unit_price": {
      "type": [
        "string",
        "null"
      ],
      "description": "The shelf price the page shows; checkout states the total."
    },
    "quantity": {
      "type": "integer"
    },
    "next_step": {
      "type": "string"
    }
  },
  "required": [
    "kind",
    "checkout_url",
    "next_step"
  ]
}
🟢get_buying_options(product_id, zip, quantity, fulfillment_mode)

Read verified buying options for the exact product, destination, quantity and fulfillment mode. Empty offers mean no options verified for this request, not that the product does not exist. Choose an eligible store, then start_checkout with the same context; the buyer approves and pays in hosted checkout.

輸入結構描述

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$",
      "maxLength": 128
    },
    "zip": {
      "type": "string",
      "pattern": "^[0-9]{5}$"
    },
    "quantity": {
      "type": "integer",
      "minimum": 1,
      "maximum": 99
    },
    "fulfillment_mode": {
      "type": "string",
      "enum": [
        "local_delivery",
        "ship_to_home"
      ]
    }
  },
  "required": [
    "product_id",
    "zip",
    "quantity",
    "fulfillment_mode"
  ],
  "additionalProperties": false
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "product_id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "brand": {
          "type": [
            "string",
            "null"
          ]
        },
        "category": {
          "type": [
            "string",
            "null"
          ]
        },
        "image": {
          "type": [
            "string",
            "null"
          ]
        },
        "price": {
          "type": [
            "string",
            "null"
          ],
          "description": "Headline price in USD; null when none is held."
        },
        "shelf_price": {
          "type": [
            "string",
            "null"
          ],
          "description": "Store shelf price observed at the named store. Browse information only; not a checkout price. Use `price` and is_eligible_checkout for purchase."
        },
        "description": {
          "type": [
            "string",
            "null"
          ],
          "description": "The merchant's own description (get_product only)."
        },
        "url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Storefront product page, where the buyer picks size/colour, checks out as a guest (email, no account) and pays. Null when no storefront is configured."
        },
        "size": {
          "type": [
            "string",
            "null"
          ],
          "description": "Size of the variant product_id names; null when it has none."
        },
        "color": {
          "type": [
            "string",
            "null"
          ],
          "description": "Colour of the variant product_id names; null when it has none."
        },
        "variants": {
          "type": "array",
          "description": "Buyable size/colour variants. Give the shopper the variant url so the page opens on that choice. search_catalog lists at most 30; get_product lists all.",
          "items": {
            "type": "object",
            "properties": {
              "product_id": {
                "type": "string"
              },
              "size": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "color": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Storefront page opened on this variant."
              }
            },
            "required": [
              "product_id"
            ]
          }
        },
        "offers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "product_id": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The exact variant this shop holds."
              },
              "store_id": {
                "type": "string"
              },
              "store_name": {
                "type": "string"
              },
              "city": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "distance_miles": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "price": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "USD, e.g. \"$12.50\". Null when we hold no current price."
              },
              "shelf_price": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Store shelf price observed at the named store. Browse information only; not a checkout price. Use `price` and is_eligible_checkout for purchase."
              },
              "is_eligible_search": {
                "type": "boolean"
              },
              "is_eligible_checkout": {
                "type": "boolean",
                "description": "True when the storefront offers this exact offer for order: ordering on, a checkout price quote, a shelf in stock, a courier or shipping, and a stated delivery fee. Local delivery is also refused when the shop's own hours show no opening within the week; a search result may not carry hours, and start_checkout re-checks with them. False forbids direct checkout. An explicitly `concierge` offer may still use start_checkout for a hosted request handoff; the product page checks whether a request is available. Neither eligibility nor a handoff reserves stock, creates a quote or places an order."
              },
              "fulfillment": {
                "type": "string",
                "enum": [
                  "pickup",
                  "local_delivery",
                  "ship_to_home",
                  "concierge",
                  "in_store_only"
                ],
                "description": "`local_delivery`: delivered from the shop. `concierge`: a person goes to the shop and buys it on the buyer's behalf. start_checkout returns a hosted request link, even when is_eligible_checkout is false; the page determines whether a request can proceed. The link is not a stock reservation, durable quote or completed purchase. `ship_to_home`: shipped from the shop. `in_store_only`: the shop carries it, but it cannot be ordered through JENNi; tell the shopper to visit the shop. `pickup` is store-owned capability metadata, not a JENNi customer reservation/ready/handoff flow, and is never returned. These are not executable MCP methods: ordering happens on the storefront."
              },
              "availability": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "in_stock",
                  "out_of_stock",
                  null
                ],
                "description": "NULL when we cannot read that shop's shelf, or the last read is over 24 hours old (shelf_observed_at says when). Null is not 'out of stock' — it means unknown, and must not be presented as either availability state."
              },
              "shelf_observed_at": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "When the shelf was last read. Null means never."
              },
              "note": {
                "type": "string",
                "description": "The disclosure a shopper sees for this shop; relay it."
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Storefront page for this exact offer."
              }
            },
            "required": [
              "store_id",
              "is_eligible_search",
              "is_eligible_checkout",
              "fulfillment",
              "availability"
            ]
          }
        },
        "offer_count": {
          "type": "integer",
          "description": "How many offers this product has. search_catalog lists at most 5, orderable ones first; get_product lists all."
        }
      },
      "required": [
        "product_id",
        "title",
        "offers"
      ]
    },
    "requested_context": {
      "type": "object",
      "required": [
        "product_id",
        "postal_code",
        "quantity",
        "fulfillment_mode"
      ],
      "properties": {
        "product_id": {
          "type": "string"
        },
        "postal_code": {
          "type": "string"
        },
        "quantity": {
          "type": "integer"
        },
        "fulfillment_mode": {
          "type": "string",
          "enum": [
            "local_delivery",
            "ship_to_home"
          ]
        }
      }
    }
  },
  "required": [
    "product",
    "requested_context"
  ]
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本5 個工具