Vintage Postcard
Affiches vintage : catalogue, devis livraison comprise et paiement Stripe.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (4)
- LOWin quote_cart
- LOWin start_order
- LOWin get_order_status
- LOWin request_custom_poster
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"boutique": {
"url": "https://vintage-postcard.fr/mcp"
}
}
}Remote-Endpunkte
https://vintage-postcard.fr/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (10)
🟢search_postcards(collection, country, limit, max_price, min_price, ...)
Recherche dans tout le catalogue d'affiches vintage par mot-clé (ville, pays, région, thème), collection et filtres de prix. Renvoie les affiches avec prix, promo, image et URL de la page produit.
Eingabe-Schema
{
"type": "object",
"properties": {
"collection": {
"description": "Filtre collection exact : « Destinations » (affiches de villes) ou « Vintage »",
"type": "string"
},
"country": {
"description": "Filtre pays exact, ex. « Portugal »",
"type": "string"
},
"limit": {
"default": 12,
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"max_price": {
"description": "Prix maximum en euros",
"type": "number"
},
"min_price": {
"description": "Prix minimum en euros",
"type": "number"
},
"offset": {
"default": 0,
"minimum": 0,
"type": "integer"
},
"query": {
"description": "Mot-clé : ville, pays, paysage… ex. « Lisbonne », « île »",
"type": "string"
},
"region": {
"description": "Filtre région exact",
"type": "string"
},
"sort": {
"default": "relevance",
"enum": [
"relevance",
"price_asc",
"price_desc",
"name"
],
"type": "string"
}
},
"additionalProperties": false
}🟢get_postcard(name, product_id)
Fiche complète d'une affiche : description, prix, prix barré, formats, option cadre, image, frais de port et affiches similaires. Accepte un identifiant ou un nom de ville.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"description": "Nom de la ville / du lieu",
"type": "string"
},
"product_id": {
"description": "Identifiant de l'affiche",
"type": "integer"
}
},
"additionalProperties": false,
"anyOf": [
{
"required": [
"product_id"
]
},
{
"required": [
"name"
]
}
]
}🟢list_destinations
Toutes les destinations du catalogue, groupées par pays avec le nombre d'affiches et quelques exemples.
Eingabe-Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_catalog_overview
Chiffres clés de la boutique : nombre d'affiches, pays couverts, fourchette de prix, formats, prix du cadre, règles de livraison.
Eingabe-Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢quote_cart(items)
Devis exact d'un panier : sous-total, option cadre, frais de livraison (offerts dès 30 €) et total. À utiliser avant d'annoncer un prix au client.
Eingabe-Schema
{
"type": "object",
"properties": {
"items": {
"items": {
"additionalProperties": false,
"properties": {
"product_id": {
"type": "integer"
},
"quantity": {
"default": 1,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"size": {
"default": "A4",
"enum": [
"A5",
"A4",
"A3"
],
"type": "string"
},
"with_frame": {
"default": false,
"type": "boolean"
}
},
"required": [
"product_id"
],
"type": "object"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"items"
],
"additionalProperties": false
}⚪start_order(email, first_name, items, last_name, shipping_address)
Crée une session de commande pour le client (panier + email + adresse de livraison optionnelle) et renvoie son identifiant, à utiliser ensuite avec `pay_order`. Aucun paiement n'est déclenché à cette étape.
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"description": "Email du client (confirmation de commande)",
"type": "string"
},
"first_name": {
"type": "string"
},
"items": {
"items": {
"additionalProperties": false,
"properties": {
"product_id": {
"type": "integer"
},
"quantity": {
"default": 1,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"size": {
"enum": [
"A5",
"A4",
"A3"
],
"type": "string"
},
"with_frame": {
"default": false,
"type": "boolean"
}
},
"required": [
"product_id"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"last_name": {
"type": "string"
},
"shipping_address": {
"additionalProperties": false,
"properties": {
"address": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"default": "France",
"type": "string"
},
"zip_code": {
"type": "string"
}
},
"type": "object"
}
},
"required": [
"items",
"email"
],
"additionalProperties": false
}⚪pay_order(method, payment_token, session_id)
Déclenche le paiement d'une session ouverte avec `start_order`. • method="hosted_checkout" (défaut) : renvoie un lien de paiement Stripe à transmettre au client, qui confirme lui-même sa carte. • method="delegated_token" : confirme immédiatement le paiement avec un token délégué. Réservé aux agents authentifiés par une clé API de la boutique, et plafonné par commande.
Eingabe-Schema
{
"type": "object",
"properties": {
"method": {
"default": "hosted_checkout",
"enum": [
"hosted_checkout",
"delegated_token"
],
"type": "string"
},
"payment_token": {
"description": "Token de paiement délégué (Stripe), pour delegated_token",
"type": "string"
},
"session_id": {
"description": "Identifiant renvoyé par `start_order`",
"type": "string"
}
},
"required": [
"session_id"
],
"additionalProperties": false
}🟢get_order_status(email, order_id, session_id)
Statut d'une commande (en attente, payée, annulée) à partir de son numéro et de l'email du client, ou de l'identifiant de session de commande.
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"order_id": {
"type": "integer"
},
"session_id": {
"type": "string"
}
},
"additionalProperties": false
}⚪request_custom_poster(additional_info, city, email, style)
Enregistre une demande de création d'affiche vintage sur mesure (ville, style, précisions). L'équipe recontacte le client par email avec une proposition.
Eingabe-Schema
{
"type": "object",
"properties": {
"additional_info": {
"description": "Précisions, souvenir, couleurs…",
"type": "string"
},
"city": {
"description": "Ville ou lieu à illustrer",
"type": "string"
},
"email": {
"type": "string"
},
"style": {
"description": "Style souhaité, ex. « vintage années 50 »",
"type": "string"
}
},
"required": [
"email",
"city"
],
"additionalProperties": false
}🟢get_store_policies
Livraison, retours, formats, moyens de paiement et FAQ. À citer plutôt que de deviner.
Eingabe-Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Community
Nachweis