{
  "version": "2",
  "generatedAt": "2026-11-06T20:51:57.517Z",
  "listing": {
    "slug": "ddyy--minshop",
    "name": "minshop",
    "tagline": "Small store for Cloudflare Workers with a JSON agent API and a two-tier MCP server.",
    "shortTagline": "Cloudflare store with MCP",
    "description": "minshop is an Astro store that runs on Cloudflare Workers with D1 and R2, an admin, and Stripe, Lightning, OpenNode or demo payment rails. An agent can browse and pay through a public JSON API or a separate MCP Worker. With an operator token the MCP server also lists orders, creates and updates products, and fulfills orders.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "ecommerce",
    "alternativeTo": [],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "deterministic",
    "provenance": "unknown",
    "codeStack": {
      "languages": [
        "TypeScript"
      ],
      "frameworks": [
        "Astro",
        "Tailwind CSS"
      ],
      "packageManager": "npm",
      "database": [
        "Cloudflare D1"
      ],
      "hostingTarget": [
        "Cloudflare Workers",
        "Cloudflare R2"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/ddyy/minshop",
        "owner": "ddyy",
        "name": "minshop",
        "license": "MIT",
        "stars": 190,
        "lastCommit": "2026-08-11"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://github.com/ddyy/minshop/tree/main/mcp",
      "official": true,
      "hosted": "both"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Browse and search the catalog",
        "reachable": true,
        "evidence": "MCP tools browse_products, get_product_details; GET /api/products"
      },
      {
        "job": "Check out and pay",
        "reachable": true,
        "evidence": "MCP tools payment_methods, create_checkout; POST /api/checkout returns checkout_url and order_status_url"
      },
      {
        "job": "Track an order's status and downloads",
        "reachable": true,
        "evidence": "MCP tool check_order_status; GET /order/:token/status"
      },
      {
        "job": "Create and update products",
        "reachable": true,
        "evidence": "operator MCP tools create_product, update_product, list_products, get_product"
      },
      {
        "job": "View and fulfill orders",
        "reachable": true,
        "evidence": "operator MCP tools list_orders, get_order, fulfill_order"
      },
      {
        "job": "See revenue and daily totals",
        "reachable": true,
        "evidence": "operator MCP tools order_stats, daily_totals"
      },
      {
        "job": "Edit categories, pages and media",
        "reachable": false,
        "evidence": "mcp/src/index.ts registers no tools for categories, Markdown pages or the media library"
      },
      {
        "job": "Configure shipping, payments and email",
        "reachable": false,
        "evidence": "README: set in Admin > Settings; no MCP tool for settings"
      },
      {
        "job": "Refunds and customers",
        "reachable": false,
        "evidence": "No refund or customer tool among the 14 MCP tools"
      },
      {
        "job": "Edit theme templates",
        "reachable": false,
        "evidence": "CUSTOMIZING.md: themes are source files compiled at deploy time"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/ddyy/minshop"
          },
          {
            "kind": "installable",
            "url": "https://www.npmjs.com/package/create-minshop",
            "command": "npm create minshop@latest my-store"
          },
          {
            "kind": "one-click",
            "url": "https://deploy.workers.cloudflare.com/?url=https://github.com/ddyy/minshop"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "AGENTS.md is contributor guidance. The store advertises its MCP URL in llms.txt when MCP_URL is set."
    },
    "customization": {
      "summary": "The Worker needs two secrets, AUTH_SECRET and SECRETS_KEK. Store name, time zone, payments, shipping, email and search are set in Admin > Settings and kept in D1, with provider keys encrypted. Theme and look are source files under src/themes plus src/styles/overrides.css, built at deploy time. src/store.config.ts holds build-time overrides such as currency. So adapting the store means editing theme source.",
      "envVars": [
        "AUTH_SECRET",
        "SECRETS_KEK",
        "MCP_TOKEN",
        "MCP_URL",
        "STOREFRONT_URL"
      ],
      "configFiles": [
        "wrangler.jsonc",
        "src/store.config.ts",
        "theme.config.json",
        "src/themes/<your-theme>/tokens.css",
        "src/styles/overrides.css",
        ".dev.vars"
      ],
      "promptFiles": [],
      "effort": "light-edit",
      "surfaceKind": "admin-ui",
      "editCount": 11
    },
    "useWhen": [
      "you sell small or digital goods and want agents to shop and pay with Lightning",
      "you want a store on the Cloudflare free tier that your own agent can run over MCP"
    ],
    "accounts": [
      "Cloudflare",
      "Stripe (optional)",
      "Lightning node or OpenNode (optional)",
      "Resend (optional)"
    ],
    "active": true,
    "lastActivity": "2026-08-11",
    "gotchas": [
      "The MCP server is a separate Worker with its own deploy and its own MCP_TOKEN",
      "Operator MCP tools write live data; the bearer token is a single shared secret",
      "Store settings are in D1 through the admin, so theme edits do not cover them",
      "Node 22.12 or newer is required",
      "Single maintainer; repo created 2026-07-20. No commit on main since 2026-08-11, and 14 outside pull requests sit open with no reply"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 2
    },
    "evidence": {
      "formFactor": "README: Astro SSR store on Cloudflare Workers with admin",
      "executionModel": "no model at runtime; optional Workers AI search",
      "operability": "README calls the MCP server optional beside a server-rendered store with a full admin, and settings are reached only through the admin, so the agent is not the primary interface: official. mcp/src/index.ts registers 14 tools (5 buyer, 9 operator); initialize on demo-mcp.minshop.dev/mcp returned 200",
      "effort": "CUSTOMIZING.md names each store-owned file and says you edit source, build and deploy; src/store.config.ts holds currency and order numbers; the README says provider keys and store settings are in Admin",
      "editions": "MIT; no paid edition; hosting runs on the Adopter's own Cloudflare account",
      "active": "main last commit 2026-08-11 (MCP buyer tier, real development); release v0.2.0 on 2026-07-31; later pushes are Dependabot branches",
      "users": "Outside users: one outside contributor filed issues and PRs for Royal Mail, SumUp and PayPal; three others also contributed; 65 forks, and one fork has its own branding commits"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.9,
      "operability": 0.85,
      "effort": 0.75,
      "reach": 0.9,
      "editions": 0.8,
      "provenance": 0.3
    },
    "openQuestions": [
      "Is the project still maintained? The owner has not committed or replied since 2026-08-11, and npm shows 39 create-minshop downloads in the last month."
    ],
    "sources": [
      {
        "url": "https://minshop.dev",
        "foundBy": "sourcing:ecommerce:community"
      },
      {
        "url": "https://github.com/ddyy/minshop",
        "foundBy": "analysis"
      }
    ],
    "published": true,
    "lastCheckedAt": "2026-11-06",
    "research": {
      "stage": "verified",
      "verdict": "approve",
      "reason": "Verified: MIT, 190 stars, real commits on main through 2026-08-11, 14 MCP tools confirmed. Ruled official, not native: the README calls MCP optional and the store has a full human admin. The real-software gate passes on stars and on named outside users, which the analyst undercounted. Fit lowered to operable 2 for partial Reach. The owner has been quiet for three months.",
      "disputed": []
    },
    "url": "apps/ddyy--minshop.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/ddyy--minshop.json"
  }
}
