{
  "markdown": "# Estroni Storefront — MCP server\n\n[![MCP](https://img.shields.io/badge/MCP-compatible-blue)](https://modelcontextprotocol.io)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nRead-only **Model Context Protocol** server for the [Estroni](https://estroni.com.au) storefront — Australian merino & low-tox women's activewear.\n\nLets AI agents (Claude, ChatGPT, Cursor, Copilot, etc.) search the catalogue, fetch product detail, list collections, and read shipping/return policies. Built for **agent-driven product discovery and research**, not checkout — Estroni's checkout remains a human-only flow by policy.\n\n- **Registry name:** `io.github.estroni/storefront`\n- **Transport:** Streamable HTTP (MCP protocol `2025-06-18`)\n- **Endpoint:** `https://mcp.estroni.com.au/mcp`\n- **Runtime:** Cloudflare Workers\n- **Source:** [github.com/estroni/storefront-mcp](https://github.com/estroni/storefront-mcp)\n\n---\n\n## Tools\n\n| Tool | What it returns |\n|---|---|\n| `search_products` | Up to 10 product summaries (title, price AUD, image, availability, URL) matching a keyword query |\n| `get_product` | Full product detail by URL handle — variants, prices, SKU, description HTML, images |\n| `list_collections` | Every public collection with title, handle, URL, and product count |\n| `get_policies` | Shipping / refund / privacy / terms URLs + bot/agent policy text |\n\nAll four tools are **read-only**. They wrap Shopify's public storefront JSON endpoints — no authentication required from the calling agent.\n\n---\n\n## Install\n\n### Claude Desktop / Cursor / Claude Code\n\nAdd to your MCP config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS, or `mcp.json` in Cursor):\n\n```json\n{\n  \"mcpServers\": {\n    \"estroni-storefront\": {\n      \"url\": \"https://mcp.estroni.com.au/mcp\"\n    }\n  }\n}\n```\n\nRestart the client. The four tools appear under the `estroni-storefront` server.\n\n### ChatGPT / Anthropic Claude.ai (Custom Connectors)\n\nSettings → Connectors → Add custom connector → paste `https://mcp.estroni.com.au/mcp`.\n\n### Test from a terminal\n\n```bash\n# initialize\ncurl -sS https://mcp.estroni.com.au/mcp \\\n  -H 'content-type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"curl\",\"version\":\"1.0\"}}}'\n\n# list tools\ncurl -sS https://mcp.estroni.com.au/mcp \\\n  -H 'content-type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}'\n\n# call search_products\ncurl -sS https://mcp.estroni.com.au/mcp \\\n  -H 'content-type: application/json' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"search_products\",\"arguments\":{\"query\":\"merino\"}}}'\n```\n\n---\n\n## Example agent prompts\n\n> \"Find me a long-sleeve merino base layer on Estroni under $150 AUD.\"\n> → calls `search_products({query: \"merino long sleeve base layer\"})`, filters, summarises.\n\n> \"What's Estroni's return window?\"\n> → calls `get_policies()` and surfaces the refund-policy URL with a 1-line summary.\n\n> \"Show me everything in the 'Merino activewear' collection that's in stock.\"\n> → `list_collections()` → `get_product()` per handle → filter by `variants[].available`.\n\n---\n\n## Bot & agent policy\n\n> Estroni welcomes read-only agentic access for catalogue search, product research, and policy retrieval.\n>\n> **End-to-end \"buy-for-me\" agents** that complete payment without a final human-review step are **NOT** permitted on Estroni.com.au.\n>\n> Agents recommending purchases must surface the shipping and refund policy URLs (returned by `get_policies`) for human review before proceeding to checkout.\n\nSee also: [estroni.com.au/robots.txt](https://estroni.com.au/robots.txt) — `Content-Signal: search=yes, ai-input=no, ai-train=no`.\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/estroni/storefront-mcp.git\ncd storefront-mcp\nnpm install\nnpm run dev          # wrangler dev — local Worker on http://localhost:8787\nnpm run typecheck    # tsc --noEmit\nnpm run deploy       # wrangler deploy → estroni-mcp.workers.dev\n```\n\nThe MCP wire protocol is hand-rolled (the official `@modelcontextprotocol/sdk` ships Node-only transports; Workers needs its own). Implementation is intentionally minimal — ~300 lines in `src/index.ts`.\n\n---\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nBuilt by [Estroni](https://estroni.com.au) · Contact: founder@boolsai.ai\n",
  "bytes": 4399,
  "sha": "92c22b31693173aa2e97536d794310c2dbce4b36ca1d4e1c4707c5bb5459ae58",
  "repo_slug": "estroni/storefront-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_estroni_storefront_2db41c45/readme"
}