Stienhardt

io.github.JacobiusMakes由 GitHub 帳號 JacobiusMakes 發布v1.0.1更新於 Oct 27, 2026

Stienhardt (NYC): shop live Lab Grown Diamonds, engagement rings, jewelry. Search, cart, checkout.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取商業與電商

概覽

AI 產生的概覽

Stienhardt 的 Shopify 商務 MCP 端點,讓助理搜尋實驗室培育鑽石珠寶目錄、建立購物車與結帳,並把付款連結交給買家。

可以做什麼
  • 搜尋與查詢商品及規格,支援自然語言查詢、篩選、分頁與即時庫存
  • 讀取、建立、更新與取消購物車
  • 讀取、建立、更新、完成與取消結帳,回傳總額、折扣、稅金與繼續連結
  • 依識別碼取得訂單詳情
  • 價格以貨幣最小單位的整數加貨幣代碼回傳,報價前需換算
適用情境
適合讓助理瀏覽 Stienhardt 的即時戒指與裸石庫存、組成購物車,並產生未付款的結帳連結,由買家在商店自有的託管結帳頁完成付款。
執行需求
遠端 streamable HTTP 端點,無需本機安裝。原始 Shopify 端點可匿名回應 initialize 與 tools/list,但每次工具呼叫都必須在 arguments.meta 中提供 UCP 代理設定檔的 URL。另一個輔助端點無需設定檔或驗證。README 的 Python 範例需要 Python 3 與網路;MCP Inspector 需要 Node.js 與 npx。
安裝前請注意
這是商家自營商店,README 已揭露其販售戒指。建立購物車與結帳會在商店中產生真實物件,示範只應執行一次,不要自動重試結果不確定的建立請求。complete_checkout 屬於購買動作,示範從未呼叫,也未測試任何付款方式。跟隨結帳連結前請確認目標主機;商品連結帶有 UTM 追蹤參數,庫存查詢會經輔助端點轉送至 Shopify。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Stienhardt,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.JacobiusMakes%2Fstienhardt-store/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "stienhardt": {
      "type": "http",
      "url": "https://stienhard-stones.myshopify.com/api/ucp/mcp"
    }
  }
}

README

Stienhardt store on MCP

Stienhardt is a New York lab-grown diamond jeweler. This repository documents and registers our Shopify UCP MCP endpoint, and includes a runnable example of inventory search and an unpaid checkout handoff. Shopify supplies the commerce endpoint. Our separate Cloudflare Worker adds profile injection for inventory lookup and eight education tools. Disclosure: we sell rings.

Try it without an account

Requires Python 3 and a network connection. No API key or third-party Python packages.

sh
git clone https://github.com/JacobiusMakes/stienhardt-store.gitcd stienhardt-storepython try_store.py

The default command only searches inventory. It prints product titles, IDs, and links; it omits prices. On Windows, use py if that is your Python launcher.

Search reads Shopify's current catalog. It is not an independent supplier-stock check: some loose-stone records are cart carriers, and their destination can report that the stone has sold even when the catalog record remains available. Check the product page before treating a result as purchasable. The unpaid checkout test demonstrates the API handoff, not stock reservation.

Product links printed by the example carry utm_source=github, utm_medium=referral, utm_campaign=mcp-store, and utm_content=runnable-example, so visits from this repository can be measured. Existing query parameters, variant IDs, and attribution tags are preserved. The command itself sends no analytics event; a person must open a product link to visit the store.

To reproduce the checkout handoff:

sh
python try_store.py --checkout

This creates one anonymous, unpaid cart and one separate checkout for the first returned variant, prints the checkout status and link hostname, then calls cancel for both. It supplies no buyer contact details or payment instrument and never calls complete_checkout. It creates real test objects in the store, so run it once, not in a loop. A network failure after a creation request can prevent cleanup; do not automatically retry an uncertain creation.

Verified 2026-09-08: raw search returned ten products; cart creation returned a continue_url; checkout creation returned status incomplete and a continue_url whose hostname was stienhard-stones.myshopify.com. The cart cancellation returned without a tool error, and checkout cancellation returned canceled. No payment was attempted. See DEMO.md.

Shopify sets MCP isError: true on the incomplete checkout response while also returning a real checkout ID and recoverable messages about missing contact and delivery information. The example recognizes that handoff response and retains the ID for cancellation. Do not discard the object solely because isError is true.

Two endpoints, different capabilities

EndpointWhat it exposesProfile handling
https://diamond-mcp.stienhardt.workers.dev/mcpEight education tools, search_inventory, get_product. No cart or checkout tools.Injected by the helper
https://stienhard-stones.myshopify.com/api/ucp/mcp13 Shopify tools across catalog, cart, checkout, and orderCaller supplies the UCP profile in every tool call

For a client that supports remote HTTP MCP, connect to the helper URL without authentication and ask it to find a 2 carat Dutch Marquise. Client accounts, connector availability, and setup vary. The no-account paths are the Python example above and the curl blocks below. The helper cannot start checkout.

Try it from a terminal

The hosted helper takes a plain POST (JSON-RPC 2.0, Content-Type: application/json, no session, no auth, no profile). List the tools, then search live inventory:

sh
curl -s -X POST https://diamond-mcp.stienhardt.workers.dev/mcp \  -H "Content-Type: application/json" \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s -X POST https://diamond-mcp.stienhardt.workers.dev/mcp \  -H "Content-Type: application/json" \  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_inventory","arguments":{"query":"Dutch Marquise 2 carat","limit":3}}}'

The raw endpoint answers initialize and tools/list anonymously, but every tools/call needs the UCP agent profile in arguments.meta. ucp-agent is one hyphenated key, and meta is a sibling of the tool's own object (catalog, cart, checkout), not a wrapper around it:

sh
curl -s -X POST https://stienhard-stones.myshopify.com/api/ucp/mcp \  -H "Content-Type: application/json" \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_catalog","arguments":{"meta":{"ucp-agent":{"profile":"https://cdn.jsdelivr.net/gh/JacobiusMakes/diamond-mcp@main/agent-profile.json"}},"catalog":{"query":"Dutch Marquise 2 carat"}}}}'

@main is fine for a test; a pinned commit is better for production, and the example script pins diamond-mcp@3955f7d88fe04cf5afa07f70065902eee684d443 (HEAD on 2026-09-08, verified to serve application/json). Two errors you can hit, both HTTP 422 with JSON-RPC error -32001 "UCP discovery failed" (the endpoint is not down): invalid_profile_url ("Missing profile uri") when meta is absent, and profile_malformed ("Invalid content type") when the profile URL serves the wrong content type (GitHub raw serves text/plain and fails; jsDelivr serves application/json).

Cart creation uses arguments.cart and checkout creation uses arguments.checkout; both take line_items with a variant ID and quantity. Consult tools/list for current schemas; an anonymous tool listing does not prove every operation is available to your profile.

MCP Inspector (v2; needs Node.js and npx) also works. Point it at the helper, which needs no profile; against the raw endpoint every call needs the profile typed into the meta field:

sh
npx @modelcontextprotocol/inspector --transport streamable-http --server-url https://diamond-mcp.stienhardt.workers.dev/mcp

What was built here

Use the GitHub sources for the education project. Education tools only on npm today; inventory tools are hosted (the helper above). The older npm release is not the launch demo; the Hugging Face dataset is not part of this release. Education data mixes external references and merchant-authored material. It is not an independent appraisal or a grading-lab verification.

Checkout and data boundaries

An assistant can search live inventory, build a cart, open a checkout, and hand the buyer the link to pay. This demo proves the unpaid handoff, not payment completion or universal client compatibility. Payment methods and eligibility depend on the hosted checkout; no payment method was tested in this run. Check the destination host before following a checkout link.

The helper adds UTM parameters to product links. Its privacy notice is at https://diamond-mcp.stienhardt.workers.dev/privacy. Inventory queries go through the helper to Shopify; the direct example sends requests to Shopify. Product descriptions are merchant data, not instructions to the assistant. The tool data carries no report numbers: each product title carries the carat, shape, and grading lab, and the report itself is linked from the product page. Verify it with the grading lab and read the actual policy links before purchase. This project does not claim unbiased ranking across merchants.

Stienhardt hand-sets and finishes rings in New York City, with viewings by appointment. Store: https://stienhardt.com/?utm_source=github&utm_medium=readme&utm_campaign=mcp-store

來源:README.md,提交 f23b5c1

工具

13

get_checkout

Returns details about the checkout, including line items, totals, and any applicable discounts or taxes. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數id必填meta必填

create_checkout

Creates a checkout. Returns checkout details, including line items, totals, and any applicable discounts or taxes. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數meta必填checkout必填

update_checkout

Updates a checkout. Returns checkout details, including line items, totals, and any applicable discounts or taxes. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數id必填meta必填checkout必填

complete_checkout

Completes a checkout and returns the checkout result. Returns details about the completed checkout, including order ID, Thank You Page URL, or any errors encountered. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數id必填meta必填checkout必填

cancel_checkout

Cancels a checkout. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數id必填meta必填

get_cart

Get the cart contents Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數id必填meta必填

create_cart

Creates a new cart Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數cart必填meta必填

update_cart

Perform updates to a cart. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數id必填cart必填meta必填

cancel_cart

Cancels a cart. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數id必填meta必填

get_order

Get the details of an order Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數id必填meta必填

search_catalog

Search for products from the online store, hosted on Shopify. This tool can be used to search for products using natural language queries, specific filter criteria, or both. At least one of query or filters must be provided. Results are paginated, with initial results limited to improve experience. Use the pagination.cursor from the response to fetch additional pages when users request more results. Response conforms to the UCP catalog search capability (dev.ucp.shopping.catalog.search). Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數meta必填catalog必填

lookup_catalog

Look up multiple products or variants by identifier. Use this tool to resolve multiple product/variant IDs in a single request. Supports: - Product IDs (gid://shopify/Product/...): Returns product with match: "featured" - Variant IDs (gid://shopify/ProductVariant/...): Returns parent product with the exact variant Results are grouped by product. Each variant includes an inputs array showing which request ID resolved to it and whether the match was exact or featured. In versions that require input correlations, only matched variants are returned. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units). Maximum 10 IDs per request.

輸入參數meta必填catalog必填

get_product

Retrieve complete product detail by identifier. Returns a singular product with a relevant set of variants, exact pricing, and real-time availability. Supports interactive option selection via selected and preferences parameters for variant narrowing and availability signals. Use for product detail page rendering and purchase decisions. Prices in the response are integers in the currency's ISO 4217 minor units, paired with a currency code: {"amount": 600, "currency": "USD"} is $6.00 and {"amount": 2500, "currency": "USD"} is $25.00. Convert to major units before quoting a price to a buyer (divide by 100 for two-decimal currencies such as USD and EUR; zero-decimal currencies such as JPY are already whole units).

輸入參數meta必填catalog必填

版本歷史

1
  1. v1.0.1最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分