Moltline Shopify Prep

com.moltlinestudioPublished by moltlinestudio.comOfficial publisherv1.2.0Updated Oct 24, 2026

Check a product CSV, handles, variant matrices and metafield keys. 4 of 6 free.

The publisher's own server: Moltline Business Suite

VerifiedStreamable HTTPWeb executableData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Hosted Shopify prep server that checks product CSV headers, URL handles, variant matrices and metafield keys, plus premium price and payout math.

What you can do
  • Validate a product CSV header row against Shopify's current column names
  • Generate a valid, unique URL handle from a product title
  • Count variants from option lists and flag Shopify's ceilings
  • Check metafield namespace and key naming before defining them
  • Apply a pricing rule across a list of prices and show the effect (premium)
  • Estimate net payout after processing fees and refunds (premium)
When to use it
Useful when preparing a Shopify product import or catalog cleanup and you want the common naming and limit mistakes caught before the import runs. Also handy for quick pricing and payout arithmetic on orders.
Requirements
Remote Streamable HTTP endpoint; nothing to install for clients that support it. Stdio-only clients need the Python 3.9+ bridge script or Docker, with network egress to the hosted fleet. Free tools need no account or credentials; premium tools need a Moltline license in MOLTLINE_LICENSE.
Before you install
Four of six tools are free; bulk_price_change and payout_estimate require a purchased Moltline license, so expect a paid step. The license is passed as the X-Moltline-License header and should be kept in the environment, not in command-line arguments. Inputs such as prices and order totals are sent to the hosted service.

Installation

In SourceWeft

  1. Open Moltline Shopify Prep in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.moltlinestudio%2Fshopify/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "moltline-shopify-prep": {
      "type": "http",
      "url": "https://mcp.moltlinestudio.com/shopify"
    }
  }
}

README

moltline-mcp

A thin, dependency-free stdio bridge to Moltline Studio's fleet of 22 hosted MCP servers.

Most modern MCP clients can connect to the fleet directly over Streamable HTTP, no install needed (see Direct connection below). This bridge exists for clients that only speak the stdio transport: it proxies newline-delimited JSON-RPC between your client and the hosted server, verbatim, with no telemetry and no dependencies beyond the Python 3.9+ standard library.

  • 160 tools across 22 servers; 110 are free.
  • Free tier: no registration, no account, no credentials. Connect and call tools immediately.
  • Premium tools are unlocked with a Moltline license. Set MOLTLINE_LICENSE in your MCP client's environment; the bridge sends it as the X-Moltline-License header and never writes it to argv, URLs or logs. See auth.md.
  • Independently checked by MCPize on the direct endpoints (scans of 5–6 September 2026: 6 A+, 15 A, 1 B+; scores 89–98). All 22 servers score 100 on clarity, 100 on reliability and 100 on trust, 95 on protocol and 87 on safety; the one finding raised on every server is that the free tier accepts anonymous access (which is the point of it), and the spread between servers sits in MCPize's "Market" dimension (a crowded category). Each server's MCPize listing links its own public result.

Find it on: Smithery · MCPize · Glama · Clawmart · MCP Registry

The fleet

ServerToolsWhat it does
catalog10Search 138 agent skills and personas by plain-language job; preview any product.
codereview7Risk-scan a diff, flag AI-generated-code tells, find secrets, report complexity.
govern8Audit an MCP config or SKILL.md for over-broad scope and prompt-injection risk.
timeops5Business days, meeting overlap, recurrence expansion, deadline and SLA math.
data7Paste-your-data analytics: CSV profiling, A/B tests, correlation, growth, cohorts.
humanizer5Find AI-isms with evidence, fingerprint a writing voice, measure burstiness.
business830 finance, bookkeeping, legal-ops and SMB operations persona-skill products.
creator820 blogging, brand-voice, copywriting, video and social persona-skill products.
educator78 curriculum, classroom, accommodations and exam-prep persona-skill products.
outbound87 outreach, sequencing, deliverability, call-coaching and CRM-hygiene products.
personal920 inbox, calendar, travel, meals and family-logistics persona-skill products.
research87 research navigation, thesis, note-taking and citation persona-skill products.
skillmd-lint6Lint a SKILL.md for frontmatter, structure, secrets and size. All tools free.
merchant6Commerce arithmetic: processor fees, charge-to-net, invoice totals, proration.
shipping6Dimensional weight, parcel fit, landed cost, freight class, rate cards.
shopify6Check a product CSV, URL handles, variant matrices and metafield keys.
dropship6Dropshipping unit economics: margin, lead time, SKU mapping, price ladders.
recall6A portable knowledge-graph memory you pass in and get back. No database.
vision6Image header probing, bbox conversion, resize plans, color and detection math.
regclock9Incident-reporting deadlines from the legal text (EU CRA, NIS2, DORA, GDPR, UK GDPR, HIPAA, SEC 8-K), cited.
taxlots8Crypto cost basis: parse exchange CSVs, lint, match transfers, FIFO/LIFO/HIFO lots, Form 8949 rows, 1099-DA diff.
optimize11OR-Tools routing, 3-D packing, 1-D/2-D cutting, knapsack and shift rostering with stated limits.

Machine-readable discovery: api-catalog · per-server card at https://mcp.moltlinestudio.com/<server>/.well-known/mcp/server-card.json · fleet health.

Direct connection (preferred)

If your MCP client supports Streamable HTTP (Claude Desktop, Claude Code, Cursor, and most current clients do), point it straight at the hosted endpoint (nothing to install):

json
{  "mcpServers": {    "moltline-timeops": {      "type": "http",      "url": "https://mcp.moltlinestudio.com/timeops"    }  }}

Swap timeops for any slug in the table above.

The stdio bridge (for stdio-only clients)

Install

Run directly (recommended): the bridge is a single stdlib-only file, so a clone is all you need:

bash
git clone https://github.com/GarphenGate/moltline-mcp.gitpython3 moltline-mcp/moltline_mcp.py timeops   # any of the 22 slugs; default: catalog

Docker: see Docker below if you prefer a container.

A PyPI package is planned; until then, use the methods above.

Client configuration

Point your MCP client at the script with an absolute path:

json
{  "mcpServers": {    "moltline-timeops": {      "command": "python3",      "args": ["/absolute/path/to/moltline-mcp/moltline_mcp.py", "timeops"]    }  }}

Or run it through Docker (after docker build -t moltline-mcp .):

json
{  "mcpServers": {    "moltline-timeops": {      "command": "docker",      "args": ["run", "-i", "--rm", "moltline-mcp", "timeops"]    }  }}

CLI

text
python3 moltline_mcp.py [server] [--timeout SECONDS] [--list] [--version]
  • server: one of the 22 slugs (default catalog); anything else fails fast with the valid list.
  • --timeout: per-request timeout in seconds (default 300, or env MOLTLINE_TIMEOUT).
  • --list: print the server slugs and exit.
  • Env MOLTLINE_BASE_URL: override the fleet base URL (for testing).
  • Env MOLTLINE_LICENSE: your Moltline license, sent as the X-Moltline-License header to unlock premium tools. Omit it and the bridge runs free-tier only.
  • Env MOLTLINE_DEBUG=1: diagnostic logging on stderr (stdout stays protocol-clean). The license is never logged; debug output reports only whether one is configured.

Docker

The bridge also runs containerized (stdio in, network egress to the fleet required):

bash
docker build -t moltline-mcp .docker run -i --rm moltline-mcp timeops   # any of the 22 slugs; default: catalog

See Client configuration for the matching mcpServers entry.

How it works

One process per server connection. Each JSON-RPC message read from stdin is POSTed to https://mcp.moltlinestudio.com/<server>; JSON and SSE-framed responses are relayed back to stdout as newline-delimited JSON. The bridge tracks the server-assigned Mcp-Session-Id and echoes the negotiated MCP-Protocol-Version, per the Streamable HTTP transport spec. It never inspects, stores, or reports your traffic.

Tests

The bridge ships with an offline test suite - no network, no dependencies:

bash
python -m unittest -v

Twenty-two tests cover the parts that actually break in a transport bridge: newline-delimited framing, SSE event splitting (multiple events, multi-line data: payloads, a trailing event with no blank line, comments and named events), session-id capture and reuse, protocol-version negotiation on initialize only, and error relay - a JSON-RPC error document is passed through verbatim, anything else becomes a well-formed -32603. CI runs them on Python 3.9, 3.12 and 3.13, plus a Docker build and container smoke test.

Access and licensing

  • Free tier: anonymous. No registration or credentials; all free tools work immediately.
  • Premium: unlocked with a Moltline license purchased (human-in-the-loop) at moltlinestudio.com. Set MOLTLINE_LICENSE in the environment and the bridge forwards it as the X-Moltline-License request header. It is deliberately not a command-line flag: argv is world-readable through ps. It is never placed in a URL and never logged. Details: auth.md.

Links

License

MIT © 2026 Moltline Studio

Source: README.md at commit bbf91e4

Tools

6

product_csv_check

Product Csv Check

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": "<what is wrong and how to fix it>"} (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.

Parametersmodeheader_rowrequired

url_handle

Url Handle

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": "<what is wrong and how to fix it>"} (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.

Parameterstitlerequiredexisting

variant_matrix

Variant Matrix

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": "<what is wrong and how to fix it>"} (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.

Parametersoptionsrequiredlist_rowsmax_optionsmax_variants

metafield_key_check

Metafield Key Check

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": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Parameterskeyrequirednamespacerequiredvalue_type

bulk_price_change

Bulk Price Change

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": "<what is wrong and how to fix it>"} (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.

Parameterspricesrequiredround_tochange_pctchange_flatcharm_ending

payout_estimate

Payout Estimate

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": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.

Parametersordersfee_pctfee_fixedorder_totalrequiredrefund_rate_pct

Version history

1
  1. v1.2.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Moltlinestudio integrations