Koskamo

elevai Commerce Demo MCP

This MCP server connects AI agents to a demo WooCommerce shop, enabling product searches, order placement, and PostFinance payment link creation via OAuth 2.1 authentication. It allows agents to act on behalf of customers under a mandate, supporting tasks like listing orders and handling payments within demo limits.

Endpoint and access

OAuth sign-in: the first time you connect, your client opens the vendor's own authorization prompt in a browser.

elevai Commerce Demo MCP logo, by elevaiVendor evidenceStreamable HTTPOAuth sign-inEndpoint checked 2026-11-07Operated by elevai
MCP endpoint (Streamable HTTP)
https://elevai.ch/mcp
Vendor documentation

What its tools do

10 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Not annotated (1)

10 of 10 have a description · 9 of 10 declare behavior hints · 3 of 9 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to elevai.ch ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for products in the demo catalog
  • Place orders for demo items
  • Create PostFinance payment links
  • List and cancel customer orders

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
elevai-commerce 0.1
MCP protocol negotiated in check
2025-11-25
Tools
10 advertised
Resources
2 advertised
Resource templates
Sign-in required
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "resources": {
    "listChanged": false
  },
  "extensions": {
    "io.modelcontextprotocol/ui": {
      "mimeTypes": [
        "text/html;profile=mcp-app"
      ]
    }
  }
}

Server-provided instructions

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

Katalog und Bestellablauf des elevai-Demoshops. Der Agent ist per OAuth mit einem Kundenkonto verbunden; was er darf, steht im Mandat des Kunden (get_connection zeigt es). Mandat anlegen, aendern, widerrufen: https://elevai.ch/demos/woo-shop/wordpress/my-account/agenten/?von=chat Demobestellungen bis 0.05 CHF werden nur reserviert und nach drei Tagen storniert.

Tools

10 advertised

search_products — Produkte suchen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Durchsucht den Katalog des elevai-Demoshops nach einem Begriff und liefert Name, Preis, Waehrung und Produktseite. Ohne Begriff kommen die zuletzt aufgenommenen Produkte.

search_products input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "description": "Suchbegriff, etwa \"Kite\" oder \"Abo\"."
    }
  }
}
search_products output schema
{
  "type": "object",
  "required": [
    "products",
    "count"
  ],
  "properties": {
    "count": {
      "type": "integer"
    },
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "price",
          "currency"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "product_id fuer create_order"
          },
          "url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "image": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "in_stock": {
            "type": "boolean"
          }
        }
      }
    }
  }
}
search_products annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_product — Produkt ansehen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Liefert die Einzelheiten zu einem Produkt: Beschreibung, Preis, Lagerstatus, Kategorien und Bild.

get_product input schema
{
  "type": "object",
  "required": [
    "product_id"
  ],
  "properties": {
    "product_id": {
      "type": "integer",
      "description": "Die id aus search_products."
    }
  }
}
get_product output schema
{
  "type": "object",
  "required": [
    "id",
    "name",
    "price",
    "currency"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "product_id fuer create_order"
    },
    "url": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "image": {
      "type": [
        "string",
        "null"
      ]
    },
    "price": {
      "type": "string"
    },
    "currency": {
      "type": "string"
    },
    "in_stock": {
      "type": "boolean"
    }
  }
}
get_product annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_catalog — Search catalog
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the product catalog des elevai-Demoshops by keyword (UCP name; same as search_products). Returns id, name, price, currency, stock and product URL. Without a query: the newest products. No sign-in needed. The id is the product_id for get_product and create_order.

search_catalog input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "description": "Suchbegriff, etwa \"Kite\" oder \"Abo\"."
    }
  }
}
search_catalog output schema
{
  "type": "object",
  "required": [
    "products",
    "count"
  ],
  "properties": {
    "count": {
      "type": "integer"
    },
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "price",
          "currency"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "product_id fuer create_order"
          },
          "url": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "image": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "in_stock": {
            "type": "boolean"
          }
        }
      }
    }
  }
}
search_catalog annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_order — Bestellung anlegen
Advertised by the server during the last successful anonymous check.

Legt im elevai-Demoshop eine Bestellung an. Ein Aufruf mit product_id allein genuegt fuer den Anfang: Das Werkzeug prueft selbst, was noch fehlt, und liefert die Geschaeftsbedingungen samt Fassung mit — Nachfragen nach Bedingungen, E-Mail, Namen oder Adresse erledigen sich damit meist von selbst. Fehlt die Zustimmung, steht das in der Antwort; ein zweiter Aufruf mit accept_terms: true und der terms_version aus dieser Antwort schliesst die Bestellung ab (die Fassung stammt immer aus der Antwort, nie aus einer Annahme). Ist der Agent mit einem Kundenkonto verbunden (OAuth), sind Person und Adresse bereits bekannt; liegt zusaetzlich ein Mandat vor, entfaellt die AGB-Rueckfrage ganz. Zurueck kommt ein order_handle fuer create_payment_link; wie es unter einem Mandat weitergeht, steht dort. Demoshop mit Grenzen: Einzelpreis bis 0.05 CHF, Bestellsumme bis 0.25 CHF. Was sonst gilt, steht in den Geschaeftsbedingungen — nicht in deiner Antwort wiederholen.

create_order input schema
{
  "type": "object",
  "required": [
    "product_id"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "description": "Nur mitgeben, wenn das Werkzeug in einer vorherigen Antwort ausdruecklich danach gefragt hat. Niemals erfinden, niemals einen Platzhalter wie \"?\" einsetzen, und nie von sich aus danach fragen. Entfaellt ganz, wenn der Agent mit einem Kundenkonto verbunden ist oder ein bestaetigtes login_handle mitgegeben wird."
    },
    "country": {
      "type": "string",
      "description": "Zwei Buchstaben, ISO 3166-1, Vorgabe CH."
    },
    "quantity": {
      "type": "integer",
      "default": 1,
      "maximum": 5,
      "minimum": 1
    },
    "last_name": {
      "type": "string"
    },
    "first_name": {
      "type": "string"
    },
    "product_id": {
      "type": "integer",
      "description": "Die id aus search_products."
    },
    "accept_terms": {
      "type": "boolean",
      "description": "Nur true, wenn der Mensch den Geschaeftsbedingungen ausdruecklich zugestimmt hat. Nie selbst setzen."
    },
    "login_handle": {
      "type": "string",
      "description": "Nur fuer den alten Anmeldeweg ohne OAuth (Werkzeug start_login, einem verbundenen Agenten gar nicht angeboten). Bist du per OAuth verbunden, lass dieses Feld weg — das Konto steht bereits fest."
    },
    "terms_version": {
      "type": "string",
      "description": "Die Fassung, der zugestimmt wurde — woertlich aus der Antwort dieses Werkzeugs. Ohne eine solche Antwort gibt es keine Fassung: dann das Werkzeug erst ohne accept_terms aufrufen."
    }
  }
}
create_order output schema
{
  "type": "object",
  "properties": {
    "terms": {
      "type": "object",
      "description": "Wortlaut, Link und Fassung der Geschaeftsbedingungen."
    },
    "total": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "is_demo": {
      "type": "boolean"
    },
    "mandate": {
      "type": "string"
    },
    "currency": {
      "type": "string"
    },
    "order_handle": {
      "type": "string",
      "description": "Schluessel fuer create_payment_link und get_order_status, zwei Stunden gueltig. Fehlt, wenn noch etwas fehlt — siehe terms_required / email_required."
    },
    "email_required": {
      "type": "boolean",
      "description": "Es fehlt eine E-Mail-Adresse."
    },
    "terms_required": {
      "type": "boolean",
      "description": "Es fehlt die Zustimmung zu den Geschaeftsbedingungen. Frag die Person und rufe erneut auf."
    }
  }
}
create_order annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
create_payment_link — Zahllink erzeugen
Advertised by the server during the last successful anonymous check.

Erzeugt zu einer Bestellung eine PostFinance-Checkout-Zahlseite. Verlangt das Handle aus create_order. Der Betrag stammt aus der Bestellung, nicht vom Aufrufer.

create_payment_link input schema
{
  "type": "object",
  "required": [
    "order_handle"
  ],
  "properties": {
    "method": {
      "enum": [
        "pfpay"
      ],
      "type": "string",
      "description": "Zahlart: pfpay fuer PostFinance Pay. Ohne Angabe liefert das Werkzeug die Zahlart zur Bestaetigung zurueck, statt eine Zahlseite zu erzeugen."
    },
    "stepup": {
      "type": "boolean",
      "description": "Nur true, wenn die Person die Zahlung lieber selbst in der PostFinance App bestaetigen will, statt im Gespraech zuzustimmen. Zusammen mit no_card: liefert den Link zur Zahlseite."
    },
    "confirm": {
      "type": "string",
      "description": "Nur von der Zahlkarte selbst gesetzt (Klick auf den Knopf). Nie vom Modell ausfuellen."
    },
    "no_card": {
      "type": "boolean",
      "description": "Nur true, wenn die Person sagt, dass KEINE Zahlkarte und kein Knopf angezeigt wird. Dann liefert das Werkzeug einen Link zur Zahlseite (Bestaetigung in der PostFinance App) — auch unter einem Mandat mit Direktzahlung. Sonst weglassen."
    },
    "unattended": {
      "type": "boolean",
      "description": "Nur true bei einer autonomen, geplanten Aufgabe, bei der KEIN Mensch im Gespraech ist. Dann bucht ein Mandat mit Direktzahlung ohne Klick. Ist eine Person im Chat, IMMER weglassen."
    },
    "order_handle": {
      "type": "string",
      "description": "Das Handle aus create_order."
    },
    "request_approval": {
      "type": "boolean",
      "description": "Nur aus der Zahlkarte. Stoesst die Freigabe in der PostFinance App an, ohne eine Seite zu oeffnen. Verlangt eine Bestellung, fuer die schon ein Zahllink erzeugt wurde."
    },
    "confirmed_in_chat": {
      "type": "boolean",
      "description": "Nur true, wenn die Person im Gespraech soeben ausdruecklich Ja gesagt hat auf deine Frage, ob jetzt bezahlt werden soll. Gilt nur unter einem Mandat mit Direktzahlung und nur zusammen mit no_card. Nie selbst setzen, nie annehmen, nie aus dem Zusammenhang erschliessen."
    }
  }
}
create_payment_link output schema
{
  "type": "object",
  "properties": {
    "note": {
      "type": "string"
    },
    "paid": {
      "type": "boolean"
    },
    "state": {
      "type": "string"
    },
    "total": {
      "type": "string"
    },
    "direct": {
      "type": "boolean",
      "description": "Mandat erlaubt die Zahlung ohne Bestaetigung in der App."
    },
    "method": {
      "type": "string"
    },
    "stepup": {
      "type": "boolean"
    },
    "is_paid": {
      "type": "boolean"
    },
    "methods": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "currency": {
      "type": "string"
    },
    "mandate_id": {
      "type": "integer"
    },
    "order_line": {
      "type": "string",
      "description": "Was bestellt wurde, fuer die Karte."
    },
    "is_reserved": {
      "type": "boolean"
    },
    "mandate_url": {
      "type": "string"
    },
    "method_name": {
      "type": "string"
    },
    "payment_url": {
      "type": "string",
      "description": "Link zur Zahlseite; erst in der Antwort MIT Zahlart enthalten"
    },
    "shipping_to": {
      "type": "string"
    },
    "fallback_url": {
      "type": "string"
    },
    "mandate_name": {
      "type": "string"
    },
    "order_handle": {
      "type": "string"
    },
    "choice_required": {
      "type": "boolean",
      "description": "Die Karte zeigt den Knopf; gebucht wird erst beim Tippen."
    },
    "approval_requested": {
      "type": "boolean",
      "description": "Die Freigabe wurde an die PostFinance App geschickt."
    }
  }
}
create_payment_link annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
list_orders — Eigene Bestellungen auflisten
Advertised by the server during the last successful anonymous check.
Advertised read-only

Listet die Bestellungen, die Agenten fuer das verbundene Kundenkonto angelegt haben (letzte sieben Tage, neueste zuerst), je mit einem frischen order_handle. Damit lassen sich auch aeltere Bestellungen aus anderen Gespraechen finden, ihr Stand abfragen (get_order_status) und offene oder reservierte stornieren (cancel_order). Bezahlen laesst sich nur eine Bestellung, die hoechstens zwei Stunden alt ist.

list_orders input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Vorgabe 10."
    },
    "status": {
      "enum": [
        "open",
        "all"
      ],
      "type": "string",
      "description": "open: nur offene und reservierte (stornierbar). Vorgabe: all."
    }
  }
}
list_orders output schema
{
  "type": "object",
  "required": [
    "orders"
  ],
  "properties": {
    "orders": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "items": {
            "type": "string"
          },
          "total": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "created": {
            "type": "string"
          },
          "payable": {
            "type": "boolean"
          },
          "currency": {
            "type": "string"
          },
          "mandate_id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "cancellable": {
            "type": "boolean"
          },
          "mandate_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "order_handle": {
            "type": "string"
          },
          "order_number": {
            "type": "string"
          },
          "mandate_state": {
            "enum": [
              "active",
              "revoked",
              "expired",
              "deleted",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "account": {
      "type": [
        "object",
        "null"
      ]
    }
  }
}
list_orders annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cancel_order — Bestellung stornieren
Advertised by the server during the last successful anonymous check.
Advertised destructive

Storniert eine eigene Bestellung, die noch offen oder reserviert ist. Eine Reservation bei PostFinance wird dabei sofort freigegeben (statt erst nach drei Tagen). Nur auf ausdruecklichen Wunsch der Person: erst ohne confirmed_in_chat aufrufen — das Werkzeug nennt, was storniert wuerde —, die Person fragen, und erst nach ihrem Ja mit confirmed_in_chat: true erneut aufrufen. Nur Bestellungen, deren Nummer die Person ausdruecklich nennt; sagt sie «alle» oder nennt keine Nummer, die stornierbaren Nummern aufzaehlen und sie bitten, die gewuenschten Nummern zu nennen. Verlangt das Handle aus create_order oder list_orders (fuer aeltere Bestellungen aus anderen Gespraechen: zuerst list_orders).

cancel_order input schema
{
  "type": "object",
  "required": [
    "order_handle"
  ],
  "properties": {
    "reason": {
      "type": "string",
      "description": "Optional: Grund in den Worten der Person, kurz."
    },
    "order_handle": {
      "type": "string"
    },
    "confirmed_in_chat": {
      "type": "boolean",
      "description": "Nur true, wenn die Person der Stornierung im Gespraech ausdruecklich zugestimmt hat. Nie selbst setzen."
    }
  }
}
cancel_order output schema
{
  "type": "object",
  "properties": {
    "retry": {
      "type": "boolean"
    },
    "total": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "currency": {
      "type": "string"
    },
    "cancelled": {
      "type": "boolean"
    },
    "order_handle": {
      "type": "string"
    },
    "already_cancelled": {
      "type": "boolean"
    },
    "reservation_released": {
      "type": "boolean"
    },
    "confirmation_required": {
      "type": "boolean"
    }
  }
}
cancel_order annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
get_order_status — Bestellstatus abfragen
Advertised by the server during the last successful anonymous check.
Advertised read-only

Zeigt den aktuellen Stand einer Bestellung. In dieser Demo ist "reserviert" (on-hold) der Endzustand: der Betrag wird nie eingezogen und die Reservation faellt nach drei Tagen weg. Verlangt das Handle aus create_order.

get_order_status input schema
{
  "type": "object",
  "required": [
    "order_handle"
  ],
  "properties": {
    "order_handle": {
      "type": "string"
    }
  }
}
get_order_status output schema
{
  "type": "object",
  "required": [
    "status",
    "is_paid"
  ],
  "properties": {
    "total": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "created": {
      "type": [
        "string",
        "null"
      ]
    },
    "is_paid": {
      "type": "boolean"
    },
    "currency": {
      "type": "string"
    },
    "order_handle": {
      "type": "string"
    },
    "cancelled_on_request": {
      "type": "boolean"
    },
    "reservation_released": {
      "type": "boolean"
    }
  }
}
get_order_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
wait_for_payment — Auf den Zahlungseingang warten
Advertised by the server during the last successful anonymous check.
Advertised read-only

Haelt die Anfrage offen, bis die Zahlung zu einer Bestellung eingetroffen ist, und meldet dann den Endstand. Eine Runde dauert rund 25 Sekunden; kommt in dieser Zeit nichts an, ist das KEIN Fehler, sondern das Zeichen, sofort die naechste Runde zu starten (hoechstens 5 hintereinander, mit hochgezaehltem attempt). Sinnvoll direkt nach create_payment_link, sobald die Zahlungsaufforderung im Gespraech steht. Grund: Der Chat erfaehrt von einer Zahlung nichts von selbst, und die Bestaetigungsseite von PostFinance fuehrt nicht hierher zurueck. Wer waehrend des Wartens bezahlt und dann in den Chat zurueckkehrt, findet die Bestaetigung bereits vor. Verlangt das Handle aus create_order.

wait_for_payment input schema
{
  "type": "object",
  "required": [
    "order_handle"
  ],
  "properties": {
    "attempt": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1,
      "description": "Die wievielte Warterunde das ist. Erste Runde 1, danach hochzaehlen. Das Werkzeug sagt selbst, wann Schluss ist."
    },
    "max_seconds": {
      "type": "integer",
      "maximum": 90,
      "minimum": 5,
      "description": "Wie lange eine Runde warten soll. Ohne Angabe 25 Sekunden — nicht erhoehen, der Webserver schneidet laengere Anfragen ab."
    },
    "order_handle": {
      "type": "string"
    }
  }
}
wait_for_payment output schema
{
  "type": "object",
  "required": [
    "status",
    "is_paid"
  ],
  "properties": {
    "total": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "attempt": {
      "type": "integer"
    },
    "created": {
      "type": [
        "string",
        "null"
      ]
    },
    "is_paid": {
      "type": "boolean"
    },
    "currency": {
      "type": "string"
    },
    "is_final": {
      "type": "boolean"
    },
    "timed_out": {
      "type": "boolean"
    },
    "is_reserved": {
      "type": "boolean"
    },
    "order_handle": {
      "type": "string"
    },
    "attempts_left": {
      "type": "integer"
    },
    "waited_seconds": {
      "type": "integer"
    }
  }
}
wait_for_payment annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_connection — Verbindung und Mandat anzeigen
Advertised by the server during the last successful anonymous check.

Zeigt, mit welchem Kundenkonto dieser Agent verbunden ist und was er darf: Mandat, Hoechstbetraege, verbrauchtes Monatsbudget, freigegebene Kategorien, Art der Zahlungsfreigabe, Laufzeit. Aufrufen, wenn die Person fragt, was der Agent darf, oder bevor eine Bestellung an einer Grenze scheitern koennte. Mandat anlegen, aendern, widerrufen oder Verbindung trennen: https://elevai.ch/demos/woo-shop/wordpress/my-account/agenten/?von=chat

get_connection input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_connection output schema
{
  "type": "object",
  "properties": {
    "account": {
      "type": [
        "object",
        "null"
      ],
      "description": "Das Kundenkonto im Shop, mit dem diese Verbindung zugelassen wurde."
    },
    "mandate": {
      "type": [
        "object",
        "null"
      ]
    },
    "connected": {
      "type": "boolean"
    },
    "manage_url": {
      "type": "string"
    }
  }
}

Prompts

Not advertised

No prompt definitions available.

Resources

2 advertised

elevai_produkte

Advertised by the server during the last successful anonymous check.

Produktkacheln mit Bild und Preis

elevai_produkte URI
ui://elevai/produkte/2026-10-17b

MIME type: text/html;profile=mcp-app

elevai_zahlung

Advertised by the server during the last successful anonymous check.

Zahlknopf mit Betrag

elevai_zahlung URI
ui://elevai/zahlung/2026-10-17b

MIME type: text/html;profile=mcp-app

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (5 of 5 answered).

  1. 2026-11-07: 1 of 1 checks answered
  2. 2026-11-09: 2 of 2 checks answered
  3. 2026-11-10: 2 of 2 checks answered

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
4039 ms
95th percentile latency
4039 ms

Maintenance history

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

  • · probe · passed · 4039 ms · metadata changed · refuses unauthenticated resources/templates/list (HTTP 401)

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 elevai-commerce-demo-mcp https://elevai.ch/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 elevai-commerce-demo-mcp --url https://elevai.ch/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable elevai-commerce-demo-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "elevai-commerce-demo-mcp": {
      "url": "https://elevai.ch/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "elevai-commerce-demo-mcp": {
      "type": "streamableHttp",
      "url": "https://elevai.ch/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start elevai-commerce-demo-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "elevai-commerce-demo-mcp": {
      "type": "http",
      "url": "https://elevai.ch/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 elevai-commerce-demo-mcp https://elevai.ch/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://elevai.ch/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": {
    "elevai-commerce-demo-mcp": {
      "serverUrl": "https://elevai.ch/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run elevai Commerce Demo MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing