Moltline Shopify Prep
Server Details
Check a product CSV, handles, variant matrices and metafield keys. 4 of 6 free.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- GarphenGate/moltline-mcp
- GitHub Stars
- 0
- Server Listing
- moltline-mcp
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
Each tool targets a clearly distinct artifact (prices, metafield keys, payout math, CSV headers, handles, variant counts). Descriptions go further by explicitly stating 'Not for X: that is Y', pre-empting the most likely misselections. No two tools share purpose.
All names are snake_case descriptive noun phrases (product_csv_check, url_handle, variant_matrix), so the style is internally consistent and readable. There is no verb_noun action pattern across the set, but no mixing of conventions either.
Six focused tools map neatly onto the pre-import checklist stages (handles, options, headers, metafields, pricing, payouts). Each earns its place, with no filler or vanity tools.
Coverage of the Shopify import-prep lifecycle is good: handles, variants, CSV columns, metafields, pricing and payout estimates. The notable gap is row-level value validation (e.g. prices, SKUs, images), which the descriptions acknowledge by deferring it but do not provide.
Available Tools
6 toolsbulk_price_changeBulk Price ChangeARead-onlyIdempotentInspect
Apply one pricing rule across a list of prices and show the effect. PREMIUM (license).
Percentage first, then the flat amount, then rounding, stated explicitly because the order changes the answer. Typical input {"prices": [19.99, 24.5], "change_pct": 10, "charm_ending": ".99"} returns {"rows": [{"was": 19.99, "now": 21.99}, {"was": 24.5, "now": 26.99}], "total_was": 44.49, "total_now": 48.98, "uplift_pct": 10.09}.
Use when repricing a catalogue before export. Not for what a price nets you after Shopify's fees: that is payout_estimate. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "prices must contain at least one price"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| prices | Yes | Current prices, at least one, each greater than 0. | |
| round_to | No | Rounding increment applied last, e.g. 0.01 or 0.05. Default 0.01. | |
| change_pct | No | Percentage change applied first, e.g. 10 to raise by 10% or -5 to cut by 5%. Default 0. | |
| change_flat | No | Flat amount applied after the percentage. Default 0. | |
| charm_ending | No | Force every price to end in these cents, e.g. ".99" or ".95". Applied after rounding. Empty by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
metafield_key_checkMetafield Key CheckARead-onlyIdempotentInspect
Validate a metafield namespace and key before you define it. FREE.
Shopify metafield namespaces and keys are lowercase alphanumerics and underscores; a capital letter or a dash is rejected at definition time, usually after the rest of the import has already run. Typical input {"namespace": "custom", "key": "Care-Instructions"} returns {"ok": false, "problems": ["key: dashes and capitals are not allowed"], "suggested_key": "care_instructions"}.
Use when designing metafields. Not for the CSV column that carries them: that is product_csv_check. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The metafield key, e.g. "care_instructions". | |
| namespace | Yes | The metafield namespace, e.g. "custom". | |
| value_type | No | The intended metafield type, echoed back for your record, e.g. "single_line_text_field". Not validated against Shopify's type list, which changes. | single_line_text_field |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
payout_estimatePayout EstimateARead-onlyIdempotentInspect
Estimate what actually lands in the bank after processing fees. PREMIUM (license).
Typical input {"order_total": 84.5, "fee_pct": 2.9, "fee_fixed": 0.3, "orders": 120, "refund_rate_pct": 4} returns {"gross": 10140.0, "fees": 330.06, "refunds": 405.6, "net_payout": 9404.34, "effective_fee_pct": 3.26}.
Use for cash-flow planning. Not as an authoritative fee schedule: rates depend on your plan, country and card mix, so pass your own. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| orders | No | How many orders to model. Default 1. | |
| fee_pct | No | Percentage fee per transaction. Default 2.9 (a common published rate, not a promise about your account). | |
| fee_fixed | No | Fixed fee per transaction. Default 0.30. | |
| order_total | Yes | Value of one order including anything the processor takes a percentage of. Must be greater than 0. | |
| refund_rate_pct | No | Share of order value refunded, as a percentage. Default 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
product_csv_checkProduct Csv CheckARead-onlyIdempotentInspect
Check a product CSV's header row against Shopify's current columns. FREE.
Catches the failure that wastes the most time: a template copied from an out-of-date guide, using column names Shopify renamed. Typical input {"header_row": ["Handle", "Title", "Body (HTML)", "Variant Price"]} returns {"ok": false, "missing_required": [], "renamed": [{"found": "Handle", "use": "URL handle"}, ...], "unrecognised": [], "verdict": "..."}.
Use before an import, on the header row alone. Not for whether the values in the rows are valid: check a handle with url_handle and a metafield key with metafield_key_check. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "header_row must contain at least one column name"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "new" when creating products, where Shopify requires only Title; "update" when changing existing ones, where it also requires URL handle. Default "new". | new |
| header_row | Yes | The CSV's first row as a list of column names, exactly as written in the file, e.g. ["Handle", "Title", "Variant Price"]. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
url_handleUrl HandleARead-onlyIdempotentInspect
Turn a product title into a valid, unique Shopify URL handle. FREE.
Shopify handles are lowercase, may contain letters, numbers and dashes, and may not contain spaces. Typical input {"title": "Men's Merino Wool Socks (2-Pack)"} returns {"handle": "mens-merino-wool-socks-2-pack", "valid": true, "changed": true, "collisions": []}.
Use when generating handles for an import, or checking one you already have. Not for validating a whole header row: that is product_csv_check. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "title must not be empty"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The product title or a candidate handle, e.g. "Men's Merino Wool Socks". | |
| existing | No | Handles already used in the store or the file, so a collision can be reported and a suffixed alternative suggested. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
variant_matrixVariant MatrixARead-onlyIdempotentInspect
Count the variants a set of options produces, and flag the ceilings. FREE.
Option counts multiply, so three modest lists become a number nobody intended. Typical input {"options": {"Size": ["S", "M", "L"], "Colour": ["Black", "Navy"]}} returns {"option_count": 2, "variant_count": 6, "within_limits": true, "per_option": {"Size": 3, "Colour": 2}}.
Use before building an import file, to find out whether the catalogue needs splitting into several products. Not for validating the resulting CSV's columns: that is product_csv_check. Errors: on invalid, missing, or malformed input this tool never raises a protocol error; it returns {"error": ""} (for example {"error": "options must contain at least one option"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Required | Description | Default |
|---|---|---|---|
| options | Yes | Option names mapped to their values, e.g. {"Size": ["S", "M"], "Colour": ["Black"]}. Each list needs at least one value. | |
| list_rows | No | When true, also return every variant combination. Off by default because the list can be very large. | |
| max_options | No | Ceiling on distinct option names. Default 3. | |
| max_variants | No | Ceiling to check against. Default 2048, which is the limit Shopify announced on 15 October 2025, up from 100. Override it if your plan differs. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
payout_estimate1 field changed- changed
Input schema / properties / fee_pct / descriptionPrevious value: -"Percentage fee per transaction. Default 2.9 — a common\npublished rate, not a promise about your account."New value: +"Percentage fee per transaction. Default 2.9 (a common\npublished rate, not a promise about your account)."
6 tool updates
- First observed
bulk_price_change - First observed
metafield_key_check - First observed
payout_estimate - First observed
product_csv_check - First observed
url_handle - First observed
variant_matrix
Related MCP Connectors
Check product CSV structure for up to 20 records; free preview and purchase availability.
Independent static checks for supported tag and alarm CSV import formats; no HMI or PLC access.
Check an online store's product catalog before you import it or send it to a shopping feed.
Detect-only CSV check before CRM import: duplicate, invalid and role emails, blanks, phones, dates.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables validation of Shopify product CSV exports before import, detecting duplicate or whitespace-colliding SKUs, missing variant data, repeated option combinations, and conflicting metadata, returning a SHA-256-bound JSON diagnostic report.-
- AlicenseNot gradedqualityBmaintenanceEnables analyzing sales and stock CSV files to identify what to reorder, how much to buy, when products will run out, and how much inventory is tied up in dead stock. Provides read-only inventory checks and CSV column inspection without uploading data.131 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to find duplicate customers and contacts in CSV files by comparing emails, phone numbers, names, and companies, returning confidence levels and the evidence behind each match. It also inspects CSV files to reveal detected columns and row counts without exposing row contents.85 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to diff inventory snapshots from CSV files or live Shopify stores, surfacing SKU mismatches, oversell risks, blank-vs-zero issues, barcode conflicts, and sync health, with data processed locally.698 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.