wandpad-etsy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Wenn gesetzt, läuft der Server im HTTP-Modus (Streamable HTTP, Pfad /mcp). Wird von Hosting-Plattformen wie Render automatisch gesetzt; lokal nicht vorhanden → stdio | |
| ETSY_API_KEY | Yes | Keystring deiner Etsy-App | |
| ETSY_SHOP_ID | No | Wird sonst automatisch beim Login ermittelt | |
| ETSY_SHOP_NAME | No | Nur zur Anzeige | |
| ETSY_TOKEN_PATH | No | Ablageort der lokalen Tokens | ./.secrets/etsy-tokens.json |
| ETSY_REDIRECT_URI | Yes | Muss exakt der in Etsy registrierten Callback-URL entsprechen | |
| ETSY_TLS_KEY_PATH | No | Ablageort des lokalen TLS-Schlüssels | |
| ETSY_SHARED_SECRET | Yes | Shared Secret deiner Etsy-App. Seit der Etsy-Änderung vom 2026-02-09 für jede Anfrage im x-api-key-Header erforderlich (keystring:secret), nicht nur für den Token-Austausch | |
| ETSY_TLS_CERT_PATH | No | Ablageort des lokalen TLS-Zertifikats | |
| ETSY_WRITE_ENABLED | No | false (Default) = nur Lesezugriff. true schaltet die Stufe-2-Schreib-Tools frei - ersetzt NICHT die Einzelbestätigung vor jeder echten Änderung | false |
| ETSY_AUDIT_LOG_PATH | No | Ablageort des Audit-Logs für spätere Schreibaktionen | |
| ETSY_MCP_AUTH_TOKEN | No | Ein langes Zufalls-Token (z.B. mit openssl rand -hex 32 erzeugen) - schützt den öffentlichen Endpunkt im HTTP-Modus |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| etsy_auth_statusA | Zeigt, ob gerade eine gültige Etsy-Anmeldung besteht (ohne Tokens preiszugeben), inkl. Scope und Ablaufzeitpunkt. |
| etsy_auth_loginA | Startet den OAuth-2.0-Login mit PKCE: öffnet die Etsy-Autorisierungsseite im Browser, empfängt den Callback lokal, prüft den state-Wert und speichert die Tokens sicher lokal. Fordert die Scopes shops_r, listings_r, transactions_r und listings_w an. listings_w allein aktiviert noch keine Schreibfunktion - dafür muss zusätzlich ETSY_WRITE_ENABLED=true lokal gesetzt sein. |
| etsy_auth_logoutA | Entfernt die lokal gespeicherten Etsy-Tokens. Eine erneute Anmeldung ist danach jederzeit möglich. |
| etsy_get_shopA | Liest Shop-Stammdaten von Etsy: Name, Titel, Ankündigung, Währung, Anzahl aktiver Listings, Favoriten, Bewertungsdurchschnitt, Urlaubsmodus-Status. Reine Fakten direkt von Etsy, keine Berechnung. |
| etsy_get_shop_sectionsA | Listet alle Kategorien (Shop-Sections) des Shops mit Titel, Rang und Anzahl aktiver Listings darin. |
| etsy_list_listingsA | Listet Listings des Shops auf, gefiltert nach Status (active/inactive/draft/expired/sold_out; ohne Angabe: nur aktive). Enthält Titel, Preis, Bestand, Tags, Zeitstempel je Listing. Maximal 100 Ergebnisse pro Aufruf (Etsy-Limit), Paginierung über 'offset'. |
| etsy_get_listingA | Liest die Detaildaten eines einzelnen Listings anhand seiner numerischen Listing-ID. |
| etsy_get_listing_inventoryA | Liest Varianten (Products/Offerings), SKUs, Preise pro Variante und Bestand für ein Listing. Wichtig für Analysen zu fehlenden SKUs oder niedrigen Beständen. |
| etsy_get_listing_imagesA | Liest die Produktbilder eines Listings inklusive ihrer Reihenfolge (rank) und Bild-URLs. |
| etsy_get_receiptsA | Liest Bestellungen des Shops (Etsy nennt sie 'Receipts') für einen optionalen Zeitraum (max. 366 Tage), mit Paginierung (max. 100 pro Aufruf). Aus Datenschutzgründen werden Käufername, Adresse und Kontaktdaten NICHT zurückgegeben - nur Status, Land (grob), Summen und Zeitstempel. |
| etsy_get_receipt_transactionsB | Liest die einzelnen Kaufpositionen (Transaktionen) des Shops: welches Listing, welche SKU, welche Menge und welcher Preis pro Bestellung verkauft wurde. Enthält keine Käuferdaten (buyer_user_id wird herausgefiltert). |
| etsy_analyze_shopA | Sammelt Shop-, Listing- und Section-Daten und berechnet daraus objektive Kennzahlen (z.B. Preisspanne, Aufrufe, fehlende Shop-Section, kurze Titel, wenige Tags, mögliche Duplikate, fehlende SKUs, optional niedriger Bestand je Variante). Die Antwort trennt strikt zwischen 'fakten' (unverändert von Etsy), 'kennzahlen' (deterministisch berechnet) und enthält BEWUSST KEINE fertigen Empfehlungen - Interpretation und Handlungsempfehlungen sollen auf Basis dieser Rohdaten von Claude selbst formuliert werden. |
| etsy_create_draft_listingA | Erstellt ein NEUES Listing IMMER als Entwurf (draft) - niemals direkt aktiv. Erfordert ETSY_WRITE_ENABLED=true. Standardmäßig dry_run:true (nur Vorschau). Für eine echte Erstellung: zuerst die Vorschau prüfen, dem Nutzer die geplanten Daten zeigen, dessen ausdrückliche Zustimmung einholen, dann erneut mit dry_run:false und confirm:true aufrufen. |
| etsy_update_listingA | Ändert Titel, Beschreibung, Materialien, Shop-Section, Kategorie oder Herstellungsangaben eines bestehenden Listings (NICHT Preis/Bestand/Tags/Status - dafür gibt es eigene Tools). Erfordert ETSY_WRITE_ENABLED=true. dry_run:true (Standard) zeigt nur die Vorschau (alt→neu). |
| etsy_update_tagsA | Setzt die Tag-Liste (max. 13, je max. 20 Zeichen) für ein oder mehrere Listings gleichzeitig. Betrifft die Aktion mehr als ein Listing, ist zusätzlich confirm_bulk:true nötig (Sammelbestätigung), nachdem der Nutzer die vollständige Liste bestätigt hat. dry_run:true (Standard) zeigt alt→neu je Listing. |
| etsy_update_priceA | Ändert den Preis eines Listings - entweder einheitlich ('price') für alle Varianten, oder individuell je Variante ('variation_prices'). Erfordert IMMER eine Einzelbestätigung (confirm:true nach ausdrücklicher Nutzerzustimmung). dry_run:true (Standard) zeigt alt→neu je Variante. |
| etsy_update_inventoryA | Ändert den Lagerbestand (quantity) eines Listings - einheitlich ('quantity') oder individuell je Variante ('variation_quantities'). Erfordert IMMER eine Einzelbestätigung. dry_run:true (Standard) zeigt alt→neu je Variante. |
| etsy_update_variationsA | Ersetzt die vollständige Varianten-/Angebotsstruktur (Products/Offerings inkl. SKU, Eigenschaften, Preis, Bestand) eines Listings - Experten-Tool für komplexere Änderungen (neue Variante hinzufügen, SKU-Schema umbauen etc.). Ersetzt IMMER die gesamte Struktur, keine Teil-Updates. Erfordert IMMER eine Einzelbestätigung. dry_run:true (Standard) zeigt aktuell vs. geplant im Vergleich. |
| etsy_upload_listing_imageA | Lädt ein lokal vorhandenes Bild (JPG/PNG/GIF, max. 10 MB) zu einem Listing hoch. Nur lokale Dateipfade, keine URLs (aus Sicherheitsgründen wird nichts von externen Quellen heruntergeladen). Erfordert IMMER eine Einzelbestätigung. dry_run:true (Standard) prüft nur Datei und zeigt die Vorschau. |
| etsy_reorder_listing_imagesA | Ändert die Anzeige-Reihenfolge (rank) bereits hochgeladener Bilder eines Listings, ohne sie neu hochzuladen. Erfordert IMMER eine Einzelbestätigung. dry_run:true (Standard) zeigt aktuelle vs. geplante Reihenfolge. |
| etsy_activate_listingA | Setzt den Status von einem oder mehreren Listings auf "active". Betrifft die Aktion mehr als ein Listing, ist zusätzlich confirm_bulk:true nötig (Sammelbestätigung). dry_run:true (Standard) zeigt den aktuellen Status je Listing. |
| etsy_deactivate_listingA | Setzt den Status von einem oder mehreren Listings auf "inactive". Betrifft die Aktion mehr als ein Listing, ist zusätzlich confirm_bulk:true nötig (Sammelbestätigung). dry_run:true (Standard) zeigt den aktuellen Status je Listing. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DodoNic/wandpad-etsy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server