Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.alex-brecher/shopify-multi-store

NPM · SHOPIFY-MULTI-STORE-MCP-SERVER · SCANNED SEP 20

Connect AI agents to multiple Shopify Admin stores for reports, comparisons, and guarded updates.

+4 this week 87 Trust /100
Trust breakdown (7 categories)

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. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 3 of 53 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to alex-brecher/shopify-multi-store). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 12 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability38
  • 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Fail
  • AI-judged instruction clarity (fair).Partial
  • Tool/resource definitions use about 3755 tokens (~67/item across 56 items; 55 tools + 1 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
  • Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage77
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 30% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 56 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the io.github.alex-brecher/shopify-multi-store MCP server?

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

npm · shopify-multi-store-mcp-server

# add to Claude Code
claude mcp add alex-brecher-shopify-multi-store -- npx -y shopify-multi-store-mcp-server
// .cursor/mcp.json
{
  "mcpServers": {
    "alex-brecher-shopify-multi-store": {
      "command": "npx",
      "args": [
        "-y",
        "shopify-multi-store-mcp-server"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "alex-brecher-shopify-multi-store": {
      "command": "npx",
      "args": [
        "-y",
        "shopify-multi-store-mcp-server"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add alex-brecher-shopify-multi-store -- npx -y shopify-multi-store-mcp-server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "alex-brecher-shopify-multi-store": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "shopify-multi-store-mcp-server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add alex-brecher-shopify-multi-store --command npx --arg -y --arg shopify-multi-store-mcp-server
# ~/.hermes/config.yaml
mcp_servers:
  alex-brecher-shopify-multi-store:
    command: "npx"
    args: ["-y", "shopify-multi-store-mcp-server"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "alex-brecher-shopify-multi-store": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "shopify-multi-store-mcp-server"
      ]
    }
  }
}
# add to Vellum
assistant mcp add alex-brecher-shopify-multi-store -t stdio -c npx -a -y shopify-multi-store-mcp-server
// mcp.json
{
  "mcpServers": {
    "alex-brecher-shopify-multi-store": {
      "command": "npx",
      "args": [
        "-y",
        "shopify-multi-store-mcp-server"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

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

  • 18 Sept 26 +1

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

  • 16 Sept 26 +1

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

  • 14 Sept 26 +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.

  • 12 Sept 26 +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.

  • 10 Sept 26 +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.

  • 8 Sept 26 +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.

  • 7 Sept 26 −10
    • Stability: 0.50 → unverified security
    • Tool safety: pass → unverified security
    • Schema quality: 1513 → 3755 functional
    • Tool coverage: 100% → 30% functional
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • First check of Capabilities: pass functional
    • First check of Schema quality: 0 functional
    • First check of Schema quality: unverified functional
    • Schema quality: excellent → fair functional
    • Destructive annotations: pass → 100 functional
    • Package version: 1.5.1 → 1.6.0 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/shopify-multi-store-mcp-server@1.6.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo alex-brecher/shopify-multi-store
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/alex-brecher/shopify-multi-store/.github/workflows/publish.yml@refs/tags/v1.6.0
Rekor log index 2753709172
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:b1fd70a627e1e992dd88754eb0e6f26045c465847a7f2317105ab99af0b0830725c7bb569b02e7044aa898f50ed700b719f0ee9e207345774e0368324

Background: How many MCP packages publish verified provenance →

Dependencies 53 packages
Packages resolved 53
Stale 3
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 55 exposed · ~3,749 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
shopify_add_to_collection ~63

Add products to a manual collection and return its current state.

NameTypeReqDescription
collectionIdstringyes
confirmbooleanyesTrue only after authorization for this store and exact change.
productIdsarrayyes
storestringyes

No output schema declared.

No examples provided.

shopify_bulk_export_start ~59

Start an asynchronous read-only Shopify bulk export. Save the returned operation ID to resume.

NameTypeReqDescription
confirmbooleanyesTrue only after authorization for this store and exact change.
querystringyes
storestringyes

No output schema declared.

No examples provided.

shopify_bulk_export_status ~40

Resume a bulk export by its operation ID. Partial exports remain explicitly incomplete.

NameTypeReqDescription
idstringyes
storestringyes

No output schema declared.

No examples provided.

shopify_bulk_update_product_status ~83

Update explicitly selected products or one collection, with bounded selection and per-product outcomes.

NameTypeReqDescription
collectionIdstring
confirmbooleanyesTrue only after authorization for this store and exact change.
maxProductsinteger
productIdsarray
statusstringyes
storestringyes

No output schema declared.

No examples provided.

shopify_catalog_gap_report ~66

Discover products that are missing or have different publication statuses across selected stores. Bounded scans are labeled as potential rather than definitive gaps.

NameTypeReqDescription
firstintegerMaximum products scanned per store in title order.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_catalog_health ~67

Audit recent products across selected stores for missing vendor, product type, SEO fields, featured media, media alt text, and active products without inventory.

NameTypeReqDescription
firstintegerMaximum recently updated products scanned per store.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_compare_catalog ~60

Compare product titles, status, vendor, product type, and inventory for exact handles across multiple Shopify stores.

NameTypeReqDescription
handlesarrayyesOne to fifty exact product handles to compare.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_compare_collections ~63

Compare exact collection handles across stores, including titles, sort order, product counts, SEO fields, and collection images.

NameTypeReqDescription
handlesarrayyesOne to fifty exact collection handles to compare.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_compare_inventory ~60

Compare inventory, price, product status, and catalog details for selected SKUs across multiple Shopify stores.

NameTypeReqDescription
skusarrayyesOne to fifty exact SKUs to compare.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_compare_prices ~61

Compare price and compare-at price for exact SKUs across selected stores and highlight mismatches or missing variants.

NameTypeReqDescription
skusarrayyesOne to fifty exact SKUs to compare.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_create_collection ~105

Create a manual or smart collection. Pass publicationIds to publish to explicitly selected channels.

NameTypeReqDescription
confirmbooleanyesTrue only after authorization for this store and exact change.
descriptionHtmlstring
imageobject
productIdsarray
publicationIdsarray
ruleSetobject
sortOrderstring
storestringyes
titlestringyes

No output schema declared.

No examples provided.

shopify_create_discount ~151

Create a percentage discount with an explicit start date and customer audience.

NameTypeReqDescription
appliesOncePerCustomerboolean
codestringyes
collectionIdstring
confirmbooleanyesTrue only after authorization for this store and exact change.
customerEligibilitystring
customerSegmentsarray
endsAtstring
minimumPurchaseAmountnumber
minimumQuantityinteger
percentagenumberyes
productIdsarray
startsAtstringyes
storestringyes
titlestringyes
usageLimitinteger

No output schema declared.

No examples provided.

shopify_create_preview_store ~74

Create a real temporary Shopify store that a merchant can claim. No existing store is modified. Reuse requestId after interruptions to prevent duplicate creation.

NameTypeReqDescription
countrystring
namestringyes
requestIdstringyes
userUnderstandsNewStoreOnlybooleanyes

No output schema declared.

No examples provided.

shopify_create_product ~136

Create a product, options, variants and images. Defaults to draft. Optional collection membership is a separate step.

NameTypeReqDescription
collectionIdstring
confirmbooleanyesTrue only after authorization for this store and exact change.
descriptionHtmlstring
imagesarray
optionsarray
pricestring
productTypestring
statusstring
storestringyes
tagsarray
titlestringyes
variantsarray
vendorstring

No output schema declared.

No examples provided.

shopify_customer_growth ~63

Compare new-customer counts across the current and previous periods for selected stores. Count precision remains visible when Shopify caps a count.

NameTypeReqDescription
daysintegerLength of each comparison period in days.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_duplicate_sku_report ~68

Find duplicate SKUs inside each store and identify SKUs shared across stores. The report labels incomplete scans when a store exceeds the row limit.

NameTypeReqDescription
firstintegerMaximum SKU-bearing variants scanned per store.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_find_sample_product ~90

Find sample products across published Shopify demo catalogs. For categories without suitable samples, generate original product concepts from the user query and pass generatedCandidates to display draft-creation cards. Label concepts as examples, never supplier offers or verified products. Images are optional; use only available relevant image URLs.

NameTypeReqDescription
generatedCandidatesarray
limitinteger
querystringyes

No output schema declared.

No examples provided.

shopify_fulfillment_sla_report ~102

Group open unfulfilled orders into age buckets and identify orders older than a configurable fulfillment SLA across selected stores.

NameTypeReqDescription
firstintegerMaximum orders returned per store, oldest first.
lookbackDaysintegerHow far back to search for open unfulfilled orders.
slaDaysintegerOrder age in days after which the fulfillment SLA is breached.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_get_collection ~49

Get collection details, rules and a page of products.

NameTypeReqDescription
afterstring
firstinteger
idstringyes
storestringyes

No output schema declared.

No examples provided.

shopify_get_inventory_levels ~69

Get inventory by product or inventory item. Use inventoryItemId and after to page through additional locations.

NameTypeReqDescription
afterstring
firstinteger
inventoryItemIdstring
productIdstring
storestringyes

No output schema declared.

No examples provided.

shopify_get_new_store_preview_status ~35

Check an asynchronous storefront preview request and retrieve fresh preview and claim links.

NameTypeReqDescription
requestIdstringyes

No output schema declared.

No examples provided.

shopify_get_new_store_previews ~178

Start an asynchronous build of 1–3 designed storefront previews on separate NEW temporary Shopify stores, with a real claim link. Generate concrete design specifications from the user brief. Uses Shopify Dawn; does not alter an existing store. Reuse requestId after interruption. Generate demo products and designs from the brief. Products, pricing, and storefront copy remain editable after claiming.

NameTypeReqDescription
brandStylestringyes
countrystring
designsarrayyes
namestringyes
productOrServicestringyes
productsarrayyesGenerate demo product concepts and proposed prices from the brief. Do not claim these are verified supplier offers.
requestIdstringyes
targetAudiencestringyes
userUnderstandsNewStoreOnlybooleanyes

No output schema declared.

No examples provided.

shopify_get_order ~53

Get order, shipping, fulfillment, tracking and a page of line items.

NameTypeReqDescription
afterstring
firstinteger
idstringyes
storestringyes

No output schema declared.

No examples provided.

shopify_get_preview_store ~32

Refresh preview and claim links for a temporary store created by this app.

NameTypeReqDescription
storestringyes

No output schema declared.

No examples provided.

shopify_get_product ~60

Get product details, variants and media. Follow each returned cursor independently.

NameTypeReqDescription
afterstring
firstinteger
idstringyes
mediaAfterstring
storestringyes

No output schema declared.

No examples provided.

shopify_get_product_everywhere ~83

Find one exact SKU or product handle across selected stores and return a normalized product, price, status, and inventory matrix.

NameTypeReqDescription
identifierstringyesExact SKU or product handle to find.
matchBystringyesWhether the identifier is an exact SKU or exact product handle.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_get_shop_info ~59

Get identity and account information from one named Shopify Admin store. Use this tool before a sensitive change to make sure that the selected store is correct.

NameTypeReqDescription
storestringyesConfigured store alias, such as main-store or wholesale-store

No output schema declared.

No examples provided.

shopify_get_store_capabilities ~27

Inspect store identity and granted access scopes.

NameTypeReqDescription
storestringyes

No output schema declared.

No examples provided.

shopify_get_uploaded_image ~38

Read image processing status and its CDN URL without creating another file.

NameTypeReqDescription
idstringyes
storestringyes

No output schema declared.

No examples provided.

shopify_graphql_mutation ~105

Run one GraphQL Admin API mutation against one named store. Set confirm to true only after the user authorizes the exact store and change.

NameTypeReqDescription
confirmbooleanyesMust be true after the user authorizes the exact change and store.
mutationstringyesA GraphQL mutation document.
storestringyesConfigured store alias, such as main-store or wholesale-store
variablesobjectGraphQL variables as a JSON object

No output schema declared.

No examples provided.

shopify_graphql_query ~84

Run one read-only GraphQL Admin API query against one named store. Use cursor pagination and request only necessary fields.

NameTypeReqDescription
querystringyesA GraphQL query document. Mutations are rejected.
storestringyesConfigured store alias, such as main-store or wholesale-store
variablesobjectGraphQL variables as a JSON object

No output schema declared.

No examples provided.

shopify_graphql_query_many ~86

Run the same read-only GraphQL Admin API query across multiple named stores in parallel. Each store returns its own success or error result.

NameTypeReqDescription
querystringyesA read-only GraphQL query document. Mutations are rejected.
storesarrayyesOne to one hundred configured store aliases
variablesobjectGraphQL variables as a JSON object

No output schema declared.

No examples provided.

shopify_graphql_schema ~38

Explore the Admin GraphQL schema for this store API version.

NameTypeReqDescription
storestringyes
type_namestringyes

No output schema declared.

No examples provided.

shopify_list_customers ~51

Search customers with cursor pagination. Shopify protected-data permissions apply.

NameTypeReqDescription
afterstring
firstinteger
querystring
storestringyes

No output schema declared.

No examples provided.

shopify_list_orders ~48

List orders with Shopify search filters and cursor pagination.

NameTypeReqDescription
afterstring
firstinteger
querystring
storestringyes

No output schema declared.

No examples provided.

shopify_list_publications ~27

List publication IDs before publishing products or collections.

NameTypeReqDescription
storestringyes

No output schema declared.

No examples provided.

shopify_list_stores ~31

List every Shopify Admin store that remains connected to this plugin. This tool does not expose access tokens.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

shopify_list_unfulfilled_orders ~67

List recent open, unfulfilled orders across multiple Shopify stores with independent per-store results.

NameTypeReqDescription
daysintegerLookback window in days.
firstintegerMaximum orders returned per store.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_low_stock_report ~63

Find every active product variant at or below an inventory threshold across selected stores. Separates low, zero, and negative inventory.

NameTypeReqDescription
storesarrayyesOne to one hundred configured store aliases
thresholdintegerMaximum aggregate inventory quantity to include.

No output schema declared.

No examples provided.

shopify_order_summary ~77

Summarize recent order values, discounts, shipping, tax, cancellations, and financial and fulfillment statuses across selected stores. Currency totals remain separate.

NameTypeReqDescription
daysintegerLookback window in days.
firstintegerMaximum orders included per store.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_portfolio_snapshot ~62

Create a read-only operating snapshot across selected stores or every configured store. Includes shop identity and product, order, customer, and location counts when scopes permit.

NameTypeReqDescription
storesarrayStores to include. Omit this field to include every configured store.

No output schema declared.

No examples provided.

shopify_publish_resource ~57

Publish a product or collection to explicit publication IDs.

NameTypeReqDescription
confirmbooleanyesTrue only after authorization for this store and exact change.
idyes
publicationIdsarrayyes
storestringyes

No output schema declared.

No examples provided.

shopify_recent_product_changes ~73

List products updated during a selected lookback window across multiple stores, including status, inventory, vendor, and product type.

NameTypeReqDescription
daysintegerLookback window in days.
firstintegerMaximum products returned per store.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_run_analytics_query ~42

Run ShopifyQL and return columns, rows and chart metadata. Requires reports access.

NameTypeReqDescription
querystringyes
storestringyes

No output schema declared.

No examples provided.

shopify_search_collections ~48

Search manual and smart collections with cursor pagination.

NameTypeReqDescription
afterstring
firstinteger
querystring
storestringyes

No output schema declared.

No examples provided.

shopify_search_docs_chunks ~49

Search Shopify documentation and return source links. No store credentials are sent.

NameTypeReqDescription
api_namestring
max_num_resultsinteger
promptstringyes

No output schema declared.

No examples provided.

shopify_search_products ~44

Search products with cursor pagination.

NameTypeReqDescription
afterstring
firstinteger
querystring
storestringyes

No output schema declared.

No examples provided.

shopify_search_products_many ~75

Search products across selected stores using plain terms or Shopify product-search syntax. Returns bounded per-store results and completeness indicators.

NameTypeReqDescription
firstintegerMaximum products returned per store.
querystringyesProduct search terms or Shopify product-search syntax.
storesarrayyesOne to one hundred configured store aliases

No output schema declared.

No examples provided.

shopify_set_inventory ~96

Set available inventory using compare-and-set protection. Read inventory first.

NameTypeReqDescription
compareQuantityintegeryes
confirmbooleanyesTrue only after authorization for this store and exact change.
idempotencyKeystring
inventoryItemIdstringyes
locationIdstringyes
quantityintegeryes
reasonstring
storestringyes

No output schema declared.

No examples provided.

shopify_store_locations ~54

Review active, inactive, legacy, fulfillment, inventory, and address status for locations across selected stores or the full portfolio.

NameTypeReqDescription
storesarrayStores to include. Omit this field to include every configured store.

No output schema declared.

No examples provided.

Common questions

What is the io.github.alex-brecher/shopify-multi-store MCP server?

io.github.alex-brecher/shopify-multi-store is an MCP server listed in the public MCP registry as io.github.alex-brecher/shopify-multi-store. Connect AI agents to multiple Shopify Admin stores for reports, comparisons, and guarded updates. This page covers its npm package (shopify-multi-store-mcp-server).

Is the io.github.alex-brecher/shopify-multi-store MCP server safe to use?

io.github.alex-brecher/shopify-multi-store scores 87 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. Its build provenance is signed and verified. 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 io.github.alex-brecher/shopify-multi-store MCP server expose?

io.github.alex-brecher/shopify-multi-store exposes 55 tools: shopify_get_store_capabilities, shopify_switch_shop, shopify_search_products, shopify_get_product, shopify_search_collections, and 50 more. Their descriptions and schemas cost roughly 3,749 tokens of context every time the server is loaded.

Is the io.github.alex-brecher/shopify-multi-store MCP server still maintained?

io.github.alex-brecher/shopify-multi-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 io.github.alex-brecher/shopify-multi-store MCP server under?

io.github.alex-brecher/shopify-multi-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.