# com.yaktool/store (npm · yaktool-store-mcp)

Forecast a WooCommerce CSV import and migrate Shopify exports. 61 documented rules.

- Trust score: 75/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- npm · `yaktool-store-mcp`: 75/100 (this document), [markdown](https://verifymcp.io/servers/com-yaktool-store/yaktool-store-mcp.md), [page](https://verifymcp.io/servers/com-yaktool-store/yaktool-store-mcp)

## Channel facts

- Registry: `npm`
- Package: `yaktool-store-mcp`
- Version: `0.1.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 19/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 25 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 876 tokens (~438/item across 2 items; 2 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 83/100
  - Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 2 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 2 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the com.yaktool/store MCP server?

com.yaktool/store runs locally as an npm package, launched with npx -y yaktool-store-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-yaktool-store -- npx -y yaktool-store-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-yaktool-store": {
      "command": "npx",
      "args": [
        "-y",
        "yaktool-store-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-yaktool-store": {
      "command": "npx",
      "args": [
        "-y",
        "yaktool-store-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-yaktool-store -- npx -y yaktool-store-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-yaktool-store": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "yaktool-store-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-yaktool-store --command npx --arg -y --arg yaktool-store-mcp
```

### Hermes

```yaml
mcp_servers:
  com-yaktool-store:
    command: "npx"
    args: ["-y", "yaktool-store-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-yaktool-store": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "yaktool-store-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-yaktool-store -t stdio -c npx -a -y yaktool-store-mcp
```

### Other

```json
{
  "mcpServers": {
    "com-yaktool-store": {
      "command": "npx",
      "args": [
        "-y",
        "yaktool-store-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-18 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-16 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-14 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-12 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-10 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-08 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-06 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-03 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (2)

### `validate_woocommerce_csv` (~455 tokens)

Forecast a WooCommerce product CSV import

Pre-flight a WooCommerce product CSV against 40 documented rules and forecast what the import will actually do. WooCommerce fails quietly in two ways this catches: (1) a row whose SKU or ID already exists is SKIPPED unless "Update existing products" is ticked — the run still reports success; (2) any column the importer does not recognise defaults to "Do not import" on the mapping screen, so its data never arrives and nothing warns. Because the outcome depends on a checkbox the user has not ticked yet, the result gives BOTH forecasts side by side (summary.addMode and summary.updateMode) rather than guessing one. Pass `existingSkus` / `existingIds` (from Products → Export) to turn the skipped/updated split from an assumption into a fact — without them every row is forecast as new. Also checks: required Name column, duplicate SKUs, product types and variation Parent references (which need the "id:123" prefix for IDs), attribute name/value pairing, Published 1/0/-1/2, booleans that must be 1/0, plain-number prices, YYYY-MM-DD sale dates, stock, category hierarchy with ">", image URLs, FULL GS1 validation of the GTIN column, plus delimiter, UTF-8 damage, invisible characters and spreadsheet damage. Returns { rows[{line, sku, id, type, name, addMode, updateMode, findings[], ok}], columns[{name, mapped, note?}], fileFindings[], summary{addMode, updateMode, unmappedColumns, errorRows, byRule, delimiter, hasStoreContext, ...} }. Read summary.addMode.skip and summary.unmappedColumns first — those are the two silent failures.

Input parameters:

- `csv` (string, required): The product CSV contents as text, header row first. Pass it raw — delimiter, encoding and quoting quirks are part of what gets checked.
- `existingIds` (array): Product IDs already in the store. Same purpose as existingSkus, for files that match on ID.
- `existingSkus` (array): SKUs already in the store (Products → Export). Enables the real skipped-vs-updated forecast.

### `migrate_store_csv` (~421 tokens)

Convert a product CSV between Shopify and WooCommerce

Convert a product export between Shopify and WooCommerce, applying 21 documented rules. This is a STRUCTURAL conversion, not a column rename — renaming columns loses variants and every sale price. What it reshapes: Shopify handle groups become a WooCommerce variable product plus variation rows linked through Parent (and back again); per-image rows collapse into one comma-separated Images cell (and expand again); Option1/2/3 become Attribute N name/value(s). The critical value fix: the two platforms store sale prices in OPPOSITE columns. Shopify Variant Price is the current price and Compare At is the crossed-out one; WooCommerce Regular price is the crossed-out one and Sale price the current. A naive mapping silently erases every discount in the catalogue. Also translated: grams to the store weight unit, TRUE/FALSE to 1/0, Status active/draft/archived to Published 1/-1/0 (archived becomes private — a conversion never deletes), inventory policy to backorders, taxable to tax status, barcodes into the GTIN column. It never invents data: columns with no equivalent in the target platform (vendor, SEO fields, cost per item, per-market prices, categories) are returned in droppedColumns WITH REASONS instead of being written into an approximately similar column. Direction is detected from the header row; pass `direction` only when the file is not recognisable. Returns { direction, directionSource, csv (the converted file), header[], transforms[{ruleId, label, count, example}], droppedColumns[{name, reason, ruleId}], findings[], summary{sourceRows, outputRows, simpleProducts, variableProducts, variations, ...} }. Read transforms[].example to verify each translation on real values, and droppedColumns before telling anyone the migration is complete.

Input parameters:

- `csv` (string, required): The product export as text, header row first — a Shopify or WooCommerce CSV.
- `direction` (string): Only needed when the header row does not identify the platform; otherwise it is detected.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-yaktool-store/yaktool-store-mcp#diagnostics

## Score history

- 2026-09-20: 75
- 2026-09-19: 75
- 2026-09-18: 75
- 2026-09-17: 74
- 2026-09-16: 74
- 2026-09-15: 73
- 2026-09-14: 73
- 2026-09-13: 72
- 2026-09-12: 72
- 2026-09-11: 71
- 2026-09-10: 71
- 2026-09-09: 70
- 2026-09-08: 70
- 2026-09-07: 69
- 2026-09-06: 69
- 2026-09-05: 68
- 2026-09-04: 68
- 2026-09-03: 68
- 2026-09-02: 67
- 2026-09-01: 64
- 2026-08-31: 64
- 2026-08-30: 64
- 2026-08-29: 64
- 2026-08-28: 64
- 2026-08-27: 64
- 2026-08-26: 64

## Common questions

### What is the com.yaktool/store MCP server?

com.yaktool/store is an MCP server listed in the public MCP registry as com.yaktool/store. Forecast a WooCommerce CSV import and migrate Shopify exports. 61 documented rules. This page covers its npm package (yaktool-store-mcp).

### Is the com.yaktool/store MCP server safe to use?

com.yaktool/store scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the com.yaktool/store MCP server expose?

com.yaktool/store exposes 2 tools: validate_woocommerce_csv, migrate_store_csv. Their descriptions and schemas cost roughly 876 tokens of context every time the server is loaded.

### Is the com.yaktool/store MCP server still maintained?

com.yaktool/store is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the com.yaktool/store MCP server under?

com.yaktool/store declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/yaktool-store-mcp
- Socket report: https://socket.dev/npm/package/yaktool-store-mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-yaktool-store/yaktool-store-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-yaktool-store/yaktool-store-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-yaktool-store/yaktool-store-mcp
