JENNi Shop — Local & Nationwide AI Commerce

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

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
91%
Qualität der Benennung
100%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,022Tokens (Tool-Definitionen)
~7.7 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.14% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

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

Remote-Endpunkte

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

Was es kann

Tool-Inventar

Tools (5)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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.

Eingabe-Schema

{
  "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
}

Ausgabe-Schema

{
  "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"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet5 Tools