{
  "markdown": "# Stienhardt store on MCP\n\nA small New York lab-grown diamond jeweler's live inventory, cart, and checkout, reachable by any\nModel Context Protocol client. The endpoint is Shopify's own per-store Universal Commerce Protocol\n(UCP) server; this repository registers it in the official MCP Registry and documents what an\nagent can and cannot do with it. Disclosure up front: we sell rings. Nothing here appraises or\nverifies a stone; the tools point you to the grading lab's own verification page.\n\n- Registry entry: `io.github.JacobiusMakes/stienhardt-store` (published 2026-09-01)\n- Endpoint: `https://stienhard-stones.myshopify.com/api/ucp/mcp` (streamable HTTP, 13 tools)\n- Discovery: `https://stienhardt.com/.well-known/ucp` (UCP 2026-08-25; Shop Pay, Google Pay, card)\n- Hosted helper: `https://diamond-mcp.stienhardt.workers.dev/mcp` (education tools plus live\n  inventory search, with the agent profile UCP requires injected for you)\n\n## Try it (no signup, nothing to install)\n\n**Claude.ai** (any plan): Customize, Connectors, Add custom connector, name `Stienhardt`, URL\n`https://diamond-mcp.stienhardt.workers.dev/mcp`, auth None. Then ask: \"Find a 2 carat Dutch\nMarquise in stock and show me how big it reads in millimeters.\"\n\n**Claude Code**:\n\n```\nclaude mcp add --transport http stienhardt https://diamond-mcp.stienhardt.workers.dev/mcp\n```\n\n**MCP Inspector** against the raw Shopify endpoint:\n\n```\nnpx @modelcontextprotocol/inspector --transport streamable-http --server-url https://stienhard-stones.myshopify.com/api/ucp/mcp\n```\n\nNote for scripts: Cloudflare returns error 1010 to Python's default `Python-urllib` user agent on\nthe hosted helper; set any other `User-Agent` header. curl, Node, and MCP clients are unaffected.\n\n`initialize` and `tools/list` answer anonymously. Every `tools/call` must carry\n`arguments.meta.ucp-agent.profile`, a URL to a UCP platform profile; see the gating table below.\n\n## What a self-registered agent can and cannot do (probed 2026-09-02)\n\n| Step | Result |\n|---|---|\n| `search_catalog` \"Dutch Marquise 2 carat\" | Ten live products with report-certified titles, prices, and links |\n| `create_cart` with one variant | A cart with totals and a `continue_url` |\n| `create_checkout` | A checkout object: status `incomplete`, totals, refund, shipping, privacy and terms links, `payment.instruments: []`, and a `continue_url` to Stienhardt's hosted Shopify checkout |\n| `complete_checkout` | Not self-serve. Shopify grants direct completion case by case; the buyer finishes at the `continue_url` (Shop Pay, Google Pay, or card) |\n\nSo the honest sentence is: an assistant can search live inventory, read the report numbers, build a\ncart, open a checkout, and hand you the link to pay. It does not pay for you.\n\n## The one thing an agent must know (capability gating)\n\nShopify fetches the profile URL you pass, requires `Content-Type: application/json` (GitHub raw\nfails with `profile_malformed`; a CDN such as jsDelivr works), requires a `payment_handlers` block,\nand exposes only the tools whose capabilities the profile declares. Declare too little and the\ntools \"do not exist\".\n\n| Tool family | Capability key the profile must declare |\n|---|---|\n| search_catalog | dev.ucp.shopping.catalog.search |\n| lookup_catalog, get_product | dev.ucp.shopping.catalog.lookup |\n| cart tools | dev.ucp.shopping.cart |\n| checkout tools | dev.ucp.shopping.checkout (plus fulfillment, discount) |\n\nA working profile lives at\n`https://cdn.jsdelivr.net/gh/JacobiusMakes/diamond-mcp@<sha>/agent-profile.json` (source in the\ndiamond-mcp repo). Pin the commit sha; jsDelivr caches `@main` for days. Shopify's fetcher also\nrefuses `*.workers.dev` hosts, which is why the hosted helper points at the CDN copy.\n\nGeneric MCP clients do not send this profile on their own. The hosted helper injects it and exposes\ntwo clean tools, `search_inventory` and `get_product`, beside the eight open education tools.\n\n## The open education stack\n\n- diamond-mcp on npm (MIT): eight tools over a sourced, dated facts file and a 90-entry gemology\n  encyclopedia. https://github.com/JacobiusMakes/diamond-mcp\n- Hugging Face dataset `JacobiusMakes/diamond-gemology-encyclopedia` (MIT).\n- \"Dutch Marquise: Open Geometry Specification\", DOI 10.5281/zenodo.21938900. A Dutch Marquise is\n  an elongated hexagonal cut diamond, cut for brilliance; IGI reports read it as \"Hexagonal\n  Modified Brilliant\".\n\n## Consumer-safety notes (they apply when an agent shops for jewelry)\n\n- Every agent-facing title carries the lab-grown qualifier (16 CFR 23.12).\n- The buyer confirms in a trusted checkout before any payment (UCP checkout spec); agents never\n  hold card data.\n- Each stone's lab and report number are in the product data; verify them on the lab's own report\n  lookup before you pay.\n- Returns and resizing are exposed in the checkout's policy links, because an agent buyer cannot\n  try on.\n\n## Files\n\n- `server.json`: the registry manifest (GitHub namespace, remote streamable-http). Publish with\n  `mcp-publisher login github` then `mcp-publisher publish` from this folder.\n- `LICENSE`: MIT.\n\nStienhardt sources certified Lab Grown Diamonds and hand-sets and finishes rings in New York City,\nby appointment. Store: https://stienhardt.com/?utm_source=github&utm_medium=readme&utm_campaign=mcp-store\nQuestions: jgalperin@stienhardt.com.\n",
  "bytes": 5340,
  "sha": "88ab02d9d515a1fb05a96aad7ff6cd52341e47c4615e7ef4c1b71cf043bad0e3",
  "repo_slug": "jacobiusmakes/stienhardt-store",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_jacobiusmakes_stienhardt_store_63d3312c/readme"
}