Koskamo

Growtsy MCP

A read-only MCP server providing live Etsy market data for AI agents. It offers nine tools to check listing details, audit shops, retrieve sales counts, analyze niches, check rankings, validate shop names, generate tag ideas, and calculate fees based on Etsy's official API and published rates.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Growtsy MCP logo, by GrowtsyCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Growtsy
MCP endpoint (Streamable HTTP)
https://www.growtsy.com/api/mcp
Vendor documentation

What you can do with it

  • Audit an Etsy shop for optimization issues
  • Retrieve total sales count for specific shops
  • Check listing position for a search phrase
  • Calculate Etsy fees for a sale in a specific country

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
growtsy 1.0.0
MCP protocol
2025-06-18
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Growtsy reads live data from Etsy's official Open API for Etsy sellers: a listing's title, tags, photos and renewal; a shop's active listings and Etsy's own shop sales count; the shops and prices behind an Etsy search; whether a shop name is in use; Etsy fees by country. It never estimates sales, revenue or search volume, and gives no scores: Etsy does not publish per-listing sales or search counts. Every result includes `page`, a growtsy.com link that opens the same result for the seller. Cite that page, not the API.

Tools

9 advertised

etsy_listing_check — Check an Etsy listing
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Reads one Etsy listing from Etsy's API: title, the 13 tags, photo count and sizes, video, when it expires and whether it auto-renews, favorites, and whether the description mentions AI. Applies Etsy's published title/tag rules and returns the first thing to fix. Use for 'is my listing set up right?' and 'when does my listing expire?'.

etsy_listing_check input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Etsy listing link (etsy.com/listing/<number>) or the listing number"
    }
  },
  "additionalProperties": false
}
etsy_listing_check annotations
{
  "title": "Check an Etsy listing",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
etsy_shop_audit — Audit an Etsy shop
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Reads up to 100 active listings of an Etsy shop from Etsy's API and checks each one against Etsy's published title, tag and photo rules. Returns the shop's first problem and how many listings have it, per-listing issues, and Etsy's shop sales count (the shop's lifetime total, not per listing). Use for 'why is my Etsy shop not getting sales?' and 'what should I fix first?'.

etsy_shop_audit input schema
{
  "type": "object",
  "required": [
    "shop"
  ],
  "properties": {
    "shop": {
      "type": "string",
      "description": "Etsy shop name or shop link"
    }
  },
  "additionalProperties": false
}
etsy_shop_audit annotations
{
  "title": "Audit an Etsy shop",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
etsy_shop_sales — Etsy shop sales count
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Etsy's own sales count (transaction_sold_count: total sales of the shop, not per listing), active listings, favorites and opening year for up to 5 Etsy shops. No revenue estimate. Use for 'how many sales does this Etsy shop have?' and comparing competitors.

etsy_shop_sales input schema
{
  "type": "object",
  "required": [
    "shops"
  ],
  "properties": {
    "shops": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 5
        }
      ],
      "description": "Up to 5 Etsy shop names or links, as an array or a comma-separated string"
    }
  },
  "additionalProperties": false
}
etsy_shop_sales annotations
{
  "title": "Etsy shop sales count",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
etsy_top_shops — Shops behind an Etsy search
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Runs one Etsy search (first 100 active listings, relevance order) and returns the shops behind it: how many of those listings each shop has, Etsy's shop sales count and opening year. Use for 'who sells <product> on Etsy?' and 'who are my competitors?'.

etsy_top_shops input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "What the seller sells, e.g. 'ceramic mug'"
    },
    "physical": {
      "type": "boolean",
      "description": "Drop digital downloads/patterns from the results"
    }
  },
  "additionalProperties": false
}
etsy_top_shops annotations
{
  "title": "Shops behind an Etsy search",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
etsy_niche_check — Etsy niche facts
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Facts from one Etsy search: Etsy's active listing count for the phrase, the middle half and median of USD-priced listing prices (other currencies counted, not converted), tags and title phrases the listings share, and the shops behind them. No demand or saturation verdict and no search volume (Etsy's API does not provide it).

etsy_niche_check input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Product or niche phrase"
    },
    "physical": {
      "type": "boolean",
      "description": "Drop digital downloads/patterns"
    }
  },
  "additionalProperties": false
}
etsy_niche_check annotations
{
  "title": "Etsy niche facts",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
etsy_rank_check — Etsy listing position for a search
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Position of a listing (or a shop's listings) in the first 100 active listings Etsy's API returns for a search phrase, in relevance order, and which words of the phrase are missing from its title and tags. Beyond 100 it says 'not in the first 100'. etsy.com search can differ per shopper.

etsy_rank_check input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Etsy listing link (give url or shop)"
    },
    "shop": {
      "type": "string",
      "description": "Etsy shop name (give url or shop)"
    },
    "query": {
      "type": "string",
      "description": "Search phrase"
    }
  },
  "additionalProperties": false
}
etsy_rank_check annotations
{
  "title": "Etsy listing position for a search",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
etsy_shop_name_check — Etsy shop name check
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Checks up to 6 shop names against Etsy's shop name rules and whether an Etsy shop already uses each name. 'No shop found' does NOT mean available: Etsy does not reuse names of closed shops and closed shops do not show up.

etsy_shop_name_check input schema
{
  "type": "object",
  "required": [
    "names"
  ],
  "properties": {
    "names": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 6
        }
      ],
      "description": "Up to 6 names, as an array or a comma-separated string"
    }
  },
  "additionalProperties": false
}
etsy_shop_name_check annotations
{
  "title": "Etsy shop name check",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
etsy_tag_ideas — Etsy tags real listings use
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

The tags and title phrases the first 100 Etsy listings for a phrase actually use, each counted once per listing, plus a 13-tag starting set. No search volume (Etsy's API does not provide it).

etsy_tag_ideas input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "What the seller sells"
    }
  },
  "additionalProperties": false
}
etsy_tag_ideas annotations
{
  "title": "Etsy tags real listings use",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
etsy_fee_calculator — Etsy fees for one sale
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Etsy's fees for one order in the seller's country: listing fee, transaction fee, payment processing, regulatory operating fee and VAT on fees, from Etsy's published rates. Assumes no sales tax on the order and no Offsite Ads.

etsy_fee_calculator input schema
{
  "type": "object",
  "required": [
    "country",
    "price"
  ],
  "properties": {
    "price": {
      "type": "number",
      "description": "Item price in USD"
    },
    "country": {
      "type": "string",
      "description": "Seller country: ISO code (US, GB, TR…) or name"
    },
    "shipping": {
      "type": "number",
      "description": "Shipping charged to the buyer in USD (default 0)"
    }
  },
  "additionalProperties": false
}
etsy_fee_calculator annotations
{
  "title": "Etsy fees for one sale",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
575 ms
95th percentile latency
575 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 575 ms · metadata changed · 9 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http growtsy-mcp https://www.growtsy.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add growtsy-mcp --url https://www.growtsy.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable growtsy-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "growtsy-mcp": {
      "url": "https://www.growtsy.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "growtsy-mcp": {
      "type": "streamableHttp",
      "url": "https://www.growtsy.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start growtsy-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "growtsy-mcp": {
      "type": "http",
      "url": "https://www.growtsy.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http growtsy-mcp https://www.growtsy.com/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "growtsy-mcp": {
      "url": "https://www.growtsy.com/api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "growtsy-mcp": {
      "serverUrl": "https://www.growtsy.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Growtsy MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.