# io.github.robertoyanguas-ops/shopify-spy-mcp

> Extracts normalized product catalogs, live prices, variants, and availability from online stores.

- name: io.github.robertoyanguas-ops/shopify-spy-mcp
- version: 1.1.1
- connection class: R0 (autonomous)
- trust: 77/100 flags: no-repository
- quality: 76/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.robertoyanguas-ops%2Fshopify-spy-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.robertoyanguas-ops%2Fshopify-spy-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "shopify-spy-mcp": {
      "type": "http",
      "url": "https://shopify-spy-72343955726.us-central1.run.app/mcp/shopify-spy"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 35
- drivers: +reachable +uptime-100% +updated-7d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 76/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list carries no ttlMs, so clients re-fetch it

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 2 of 2 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 796 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 12 tool changes in 30 days
- fail `stability.rug_pull`: 5 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 2, about 796 tokens to load them all
- tool set hash: 8a64c00913c170c2db9b3501ab4f9d82
- tools last changed: 2026-10-19T17:07:21.903Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.robertoyanguas-ops/shopify-spy-mcp.svg)](https://protogrid.dev/servers/io.github.robertoyanguas-ops/shopify-spy-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `extract_ecommerce_catalog` changed (description)
  - before: Extracts normalized product catalogs, live prices, variants, and availability from online stores. WHEN TO USE: Call `extract_ecommerce_catalog` when your task requires deterministic `shopify-spy` analysis for `store_url`; use `get_agent_wallet_status` to check your remaining free trial quota or prepaid balance. WHEN NOT TO USE: Do not use for unrelated domains or binary media. PARAMETER INTERACTIONS: Pass the target `store_url` as a non-empty string; omit `agent_id` and `tx_hash` during your 5 free trial calls, or supply `agent_id` (`agd_pass_...`) / `tx_hash` for paid execution. Read-only and idempotent; results are cached for 1 hour (<5ms cache hit). $0.02 per call. Pricing: the first 5 calls per agent_id are free and failed calls are never charged. After 5 calls, the tool returns a payment-required quote (not a fatal error) with a $2 Stripe top-up link and Base/Solana USDC addresses; complete payment, then retry with your agd_pass_ key in agent_id or pass tx_hash. Example: extract_ecommerce_catalog(store_url='example')
  - after: Extracts normalized product catalogs, live prices, variants, and availability from online stores. WHEN TO USE: Call `extract_ecommerce_catalog` when your task requires deterministic `shopify-spy` analysis for `store_url`; use `get_agent_wallet_status` to check your remaining free trial quota or prepaid balance. WHEN NOT TO USE: Do not use for unrelated domains or binary media. PARAMETER INTERACTIONS: Pass the target `store_url` as a non-empty string; omit `agent_id` and `tx_hash` during your 5 free trial calls, or supply `agent_id` (`agd_pass_...`) / `tx_hash` for paid execution. Read-only and idempotent; results are cached for 1 hour (<5ms cache hit). $0.01 per call. Pricing: the first 5 calls per agent_id are free and failed calls are never charged. After 5 calls, the tool returns a payment-required quote (not a fatal error) with a $2 Stripe top-up link and Base/Solana USDC addresses; complete payment, then retry with your agd_pass_ key in agent_id or pass tx_hash. Example: extract_ecommerce_catalog(store_url='example')
- 2026-10-19 `get_agent_wallet_status` changed (description, inputSchema)
  - before: Inspect an agent's account ledger: remaining free trial calls (out of 5), prepaid USD balance, cumulative spend, total API calls, and total LLM tokens saved. WHEN TO USE: Call before a batch of paid tool executions or after completing a Stripe or USDC top-up to confirm your balance. WHEN NOT TO USE: Do not use to process web content, execute marketplace tools, or submit payments; use the other tools on this server for execution. PARAMETER INTERACTIONS: Omit agent_id to inspect the default trial account derived from your client IP, or pass your explicit agent_id or agd_pass_ session key to check a specific funded wallet. Free and read-only: never charges a fee or consumes a free trial call.
  - after: Inspect an agent's account ledger: remaining free trial calls (out of 5), prepaid USD balance, cumulative spend, total API calls, and total LLM tokens saved. WHEN TO USE: Call before a batch of paid tool executions or after completing a Stripe or USDC top-up to confirm your balance. WHEN NOT TO USE: Do not use to process web content, execute marketplace tools, or submit payments; use the other tools on this server for execution. PARAMETER INTERACTIONS: Omit agent_id to inspect the default trial account derived from your client IP, or pass your explicit agent_id or agd_pass_ session key to check a specific funded wallet. Free and read-only: never charges a fee or consumes a free trial call. Example: get_agent_wallet_status(agent_id='example')
- 2026-10-19 `extract_ecommerce_catalog` changed (description, inputSchema)
  - before: Extracts normalized product catalogs, live prices, variants, and availability from online stores. WHEN TO USE: Call `extract_ecommerce_catalog` when your task requires deterministic `shopify-spy` analysis for `store_url`; use `get_agent_wallet_status` to check your remaining free trial quota or prepaid balance. WHEN NOT TO USE: Do not use for unrelated domains or binary media. PARAMETER INTERACTIONS: Pass the target `store_url` as a non-empty string; omit `agent_id` and `tx_hash` during your 5 free trial calls, or supply `agent_id` (`agd_pass_...`) / `tx_hash` for paid execution. Read-only and idempotent; results are cached for 1 hour (<5ms cache hit). $0.02 per call. Pricing: the first 5 calls per agent_id are free and failed calls are never charged. After 5 calls, the tool returns a payment-required quote (not a fatal error) with a $2 Stripe top-up link and Base/Solana USDC addresses; complete payment, then retry with your agd_pass_ key in agent_id or pass tx_hash.
  - after: Extracts normalized product catalogs, live prices, variants, and availability from online stores. WHEN TO USE: Call `extract_ecommerce_catalog` when your task requires deterministic `shopify-spy` analysis for `store_url`; use `get_agent_wallet_status` to check your remaining free trial quota or prepaid balance. WHEN NOT TO USE: Do not use for unrelated domains or binary media. PARAMETER INTERACTIONS: Pass the target `store_url` as a non-empty string; omit `agent_id` and `tx_hash` during your 5 free trial calls, or supply `agent_id` (`agd_pass_...`) / `tx_hash` for paid execution. Read-only and idempotent; results are cached for 1 hour (<5ms cache hit). $0.02 per call. Pricing: the first 5 calls per agent_id are free and failed calls are never charged. After 5 calls, the tool returns a payment-required quote (not a fatal error) with a $2 Stripe top-up link and Base/Solana USDC addresses; complete payment, then retry with your agd_pass_ key in agent_id or pass tx_hash. Example: extract_ecommerce_catalog(store_url='example')
- 2026-10-18 `get_agent_wallet_status` changed (description, inputSchema, outputSchema) **meaning changed**
  - before: Show an agent's account: free calls used (of 5), prepaid USD balance, total spent, total calls and tokens saved. Free: it never charges or uses a free call. Call it before a batch of paid calls, or after a top-up to confirm the credit arrived. It does not process content or take payments; use the other tools on this server for that. Returns JSON with free_calls_used, balance_usd, total_spent_usd, total_tokens_saved.
  - after: Inspect an agent's account ledger: remaining free trial calls (out of 5), prepaid USD balance, cumulative spend, total API calls, and total LLM tokens saved. WHEN TO USE: Call before a batch of paid tool executions or after completing a Stripe or USDC top-up to confirm your balance. WHEN NOT TO USE: Do not use to process web content, execute marketplace tools, or submit payments; use the other tools on this server for execution. PARAMETER INTERACTIONS: Omit agent_id to inspect the default trial account derived from your client IP, or pass your explicit agent_id or agd_pass_ session key to check a specific funded wallet. Free and read-only: never charges a fee or consumes a free trial call.
- 2026-10-18 `extract_ecommerce_catalog` changed (description, inputSchema, outputSchema)
  - before: Extracts normalized product catalogs, live prices, variants, and availability from online stores. Use it when your task needs this for one store_url; this endpoint offers only this tool and get_agent_wallet_status. Read-only; results are cached for 1 hour. $0.02 per call. Returns JSON with the result under data. Pricing: the first 5 calls per agent_id are free and failed calls are never charged. After that the tool returns a payment-required message (not an error) with a Stripe top-up link (from $2) and Base/Solana USDC addresses; pay, then repeat the same call with the same agent_id, or add tx_hash after a USDC transfer.
  - after: Extracts normalized product catalogs, live prices, variants, and availability from online stores. WHEN TO USE: Call `extract_ecommerce_catalog` when your task requires deterministic `shopify-spy` analysis for `store_url`; use `get_agent_wallet_status` to check your remaining free trial quota or prepaid balance. WHEN NOT TO USE: Do not use for unrelated domains or binary media. PARAMETER INTERACTIONS: Pass the target `store_url` as a non-empty string; omit `agent_id` and `tx_hash` during your 5 free trial calls, or supply `agent_id` (`agd_pass_...`) / `tx_hash` for paid execution. Read-only and idempotent; results are cached for 1 hour (<5ms cache hit). $0.02 per call. Pricing: the first 5 calls per agent_id are free and failed calls are never charged. After 5 calls, the tool returns a payment-required quote (not a fatal error) with a $2 Stripe top-up link and Base/Solana USDC addresses; complete payment, then retry with your agd_pass_ key in agent_id or pass tx_hash.
- 2026-10-16 `get_agent_wallet_status` changed (description, inputSchema, annotations) **meaning changed**
  - before: Returns the calling agent's remaining free quota, USD balance, and total tokens saved. WHEN TO USE: Call for deterministic, token-efficient `get_agent_wallet_status` execution. WHEN NOT TO USE: Skip on binary media or unrelated domains. BEHAVIOR: Read-only, idempotent, 1h cache (<5ms HIT), SHA-256 ROI proof (HTTP 402 / x402 Base USDC / L402).
  - after: Show an agent's account: free calls used (of 5), prepaid USD balance, total spent, total calls and tokens saved. Free: it never charges or uses a free call. Call it before a batch of paid calls, or after a top-up to confirm the credit arrived. It does not process content or take payments; use the other tools on this server for that. Returns JSON with free_calls_used, balance_usd, total_spent_usd, total_tokens_saved.
- 2026-10-16 `extract_ecommerce_catalog` changed (description, inputSchema, annotations) **meaning changed**
  - before: E-Commerce & SaaS Product Catalog / Price Extractor (0.02 USDC via x402): Extracts normalized product catalogs, live prices, variants, and availability from online stores. WHEN TO USE: Call for deterministic, token-efficient `extract_ecommerce_catalog` execution. WHEN NOT TO USE: Skip on binary media or unrelated domains. BEHAVIOR: Read-only, idempotent, 1h cache (<5ms HIT), SHA-256 ROI proof (HTTP 402 / x402 Base USDC / L402).
  - after: Extracts normalized product catalogs, live prices, variants, and availability from online stores. Use it when your task needs this for one store_url; this endpoint offers only this tool and get_agent_wallet_status. Read-only; results are cached for 1 hour. $0.02 per call. Returns JSON with the result under data. Pricing: the first 5 calls per agent_id are free and failed calls are never charged. After that the tool returns a payment-required message (not an error) with a Stripe top-up link (from $2) and Base/Solana USDC addresses; pay, then repeat the same call with the same agent_id, or add tx_hash after a USDC transfer.
- 2026-10-16 `get_agent_wallet_status` changed (inputSchema)
- 2026-10-16 `extract_ecommerce_catalog` changed (inputSchema)
- 2026-10-15 `get_agent_wallet_status` changed (description, inputSchema, annotations) **meaning changed**
  - before: Returns the calling agent's remaining free quota, USD balance, and total tokens saved.
  - after: Returns the calling agent's remaining free quota, USD balance, and total tokens saved. WHEN TO USE: Call for deterministic, token-efficient `get_agent_wallet_status` execution. WHEN NOT TO USE: Skip on binary media or unrelated domains. BEHAVIOR: Read-only, idempotent, 1h cache (<5ms HIT), SHA-256 ROI proof (HTTP 402 / x402 Base USDC / L402).

Full history: https://api.protogrid.dev/v1/servers/io.github.robertoyanguas-ops%2Fshopify-spy-mcp/changes

## Remotes

- https://shopify-spy-72343955726.us-central1.run.app/mcp/shopify-spy (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (2)

- `extract_ecommerce_catalog`: Extracts normalized product catalogs, live prices, variants, and availability from online stores. WHEN TO USE: Call `extract_ecommerce_catalog` when your task requires deterministic `shopify-spy` analysis for `store_url`; use `get_agent_wallet_status` to check your remaining free trial quota or prepaid balance. WHEN NOT TO USE: Do not use for unrelated domains or binary media. PARAMETER INTERACTIONS: Pass the target `store_url` as a non-empty string; omit `agent_id` and `tx_hash` during your 5 free trial calls, or supply `agent_id` (`agd_pass_...`) / `tx_hash` for paid execution. Read-only and idempotent; results are cached for 1 hour (<5ms cache hit). $0.01 per call. Pricing: the first 5 calls per agent_id are free and failed calls are never charged. After 5 calls, the tool returns a payment-required quote (not a fatal error) with a $2 Stripe top-up link and Base/Solana USDC addresses; complete payment, then retry with your agd_pass_ key in agent_id or pass tx_hash. Example: extract_ecommerce_catalog(store_url='example')
- `get_agent_wallet_status`: Inspect an agent's account ledger: remaining free trial calls (out of 5), prepaid USD balance, cumulative spend, total API calls, and total LLM tokens saved. WHEN TO USE: Call before a batch of paid tool executions or after completing a Stripe or USDC top-up to confirm your balance. WHEN NOT TO USE: Do not use to process web content, execute marketplace tools, or submit payments; use the other tools on this server for execution. PARAMETER INTERACTIONS: Omit agent_id to inspect the default trial account derived from your client IP, or pass your explicit agent_id or agd_pass_ session key to check a specific funded wallet. Free and read-only: never charges a fee or consumes a free trial call. Example: get_agent_wallet_status(agent_id='example')
