{"openapi":"3.1.0","info":{"title":"Merka — catalogue public","version":"1.0.0","summary":"Lecture seule du catalogue d'objets d'occasion de Merka (Suisse).","description":"Une seule adresse, une seule méthode : le corps est du JSON-RPC 2.0, et le champ `method` choisit ce qui est fait. C'est le transport MCP (Model Context Protocol), celui que parlent les assistants ; ce document le redit en OpenAPI pour les outils qui ne le parlent pas.\n\nAucune écriture. Aucune donnée personnelle : les réponses ne portent ni nom, ni adresse, ni contact de vendeur. Aucune clé n'est demandée.\n\nLimites par adresse appelante : 120 appels par minute, 20000 par jour. Un refus rend un en-tête `Retry-After` en secondes.","contact":{"name":"Merka","email":"contact@merka.ch","url":"https://merka.ch/developpeurs"}},"servers":[{"url":"https://merka.ch"}],"paths":{"/api/mcp":{"post":{"summary":"Appeler un outil du catalogue","description":"`method` vaut `tools/list` pour obtenir la description de tous les outils, ou `tools/call` pour en appeler un. Les autres méthodes du protocole (`initialize`, `ping`) existent aussi.","operationId":"appelerOutil","requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["jsonrpc","id","method","params"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"method":{"type":"string","const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"properties":{"name":{"type":"string","const":"rechercher_annonces"},"arguments":{"type":"object","properties":{"texte":{"type":"string","description":"Mots-clés, en français, allemand, italien ou anglais"},"categorie":{"type":"string","enum":["Meubles","Décoration","Cuisine & vaisselle","Textiles & literie","Électroménager","Animalerie & accessoires","Bureau & papeterie","Vêtements","Chaussures","Sacs","Bagages & voyage","Bijoux & accessoires","Montres","Lunettes","Téléphones & tablettes","Ordinateurs & périphériques","Image & son","Photo & vidéo","Consoles & jeux vidéo","Objets connectés & accessoires","Imprimantes & scanners","Ski & sports d'hiver","Randonnée & camping","Fitness & musculation","Sports d'eau","Sports de balle & raquette","Autres sports","Pièces & accessoires auto","Pneus & jantes","Pièces moto & scooter","Équipement du motard","Vélos","Vélos électriques","Trottinettes & mobilité électrique","Pièces & accessoires vélo","Vêtements enfants","Jouets & jeux","Poussettes & sièges auto","Puériculture","Chambre d'enfant","Films & musique","Jeux de société & puzzles","Instruments de musique","Collections","Art & antiquités","Loisirs créatifs","Cartes à collectionner","Modélisme & RC","Fêtes & déguisements","Jardin","Mobilier de jardin & barbecue","Outillage","Matériaux & installation","Santé & beauté","Romans","Bandes dessinées & mangas","Jeunesse","Scolaire & études","Beaux livres","Cuisine & loisirs","Autres livres"]},"prixMax":{"type":"number","description":"Prix maximum de l'objet, en CHF"},"limite":{"type":"number","description":"1 à 50, défaut 20"}}}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"method":{"type":"string","const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"properties":{"name":{"type":"string","const":"obtenir_annonce"},"arguments":{"type":"object","properties":{"id":{"type":"string","description":"Identifiant rendu par la recherche"}},"required":["id"]}}}}},{"type":"object","required":["jsonrpc","id","method","params"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"method":{"type":"string","const":"tools/call"},"params":{"type":"object","required":["name","arguments"],"properties":{"name":{"type":"string","const":"lister_categories"},"arguments":{"type":"object","properties":{}}}}}}]}}}},"responses":{"200":{"description":"Réponse JSON-RPC. Le résultat d'un outil arrive dans `result.content[0].text`, sous forme de JSON sérialisé. Une erreur applicative arrive dans `error`, avec le même code HTTP 200 : c'est le protocole qui porte l'erreur, pas le code HTTP.","content":{"application/json":{"schema":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"result":{"type":"object","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string"}}}},"isError":{"type":"boolean"}}},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}}}}}}}}}},"get":{"summary":"Carte de visite du connecteur","description":"Rend le nom, la liste des outils et l'adresse de la documentation. Un client MCP qui demande un flux d'événements (`Accept: text/event-stream`) reçoit un 405 : ce connecteur ne pousse rien, il répond.","operationId":"decrireConnecteur","responses":{"200":{"description":"Carte de visite JSON"}}}}},"components":{"schemas":{"rechercher_annonces":{"type":"object","properties":{"texte":{"type":"string","description":"Mots-clés, en français, allemand, italien ou anglais"},"categorie":{"type":"string","enum":["Meubles","Décoration","Cuisine & vaisselle","Textiles & literie","Électroménager","Animalerie & accessoires","Bureau & papeterie","Vêtements","Chaussures","Sacs","Bagages & voyage","Bijoux & accessoires","Montres","Lunettes","Téléphones & tablettes","Ordinateurs & périphériques","Image & son","Photo & vidéo","Consoles & jeux vidéo","Objets connectés & accessoires","Imprimantes & scanners","Ski & sports d'hiver","Randonnée & camping","Fitness & musculation","Sports d'eau","Sports de balle & raquette","Autres sports","Pièces & accessoires auto","Pneus & jantes","Pièces moto & scooter","Équipement du motard","Vélos","Vélos électriques","Trottinettes & mobilité électrique","Pièces & accessoires vélo","Vêtements enfants","Jouets & jeux","Poussettes & sièges auto","Puériculture","Chambre d'enfant","Films & musique","Jeux de société & puzzles","Instruments de musique","Collections","Art & antiquités","Loisirs créatifs","Cartes à collectionner","Modélisme & RC","Fêtes & déguisements","Jardin","Mobilier de jardin & barbecue","Outillage","Matériaux & installation","Santé & beauté","Romans","Bandes dessinées & mangas","Jeunesse","Scolaire & études","Beaux livres","Cuisine & loisirs","Autres livres"]},"prixMax":{"type":"number","description":"Prix maximum de l'objet, en CHF"},"limite":{"type":"number","description":"1 à 50, défaut 20"}},"title":"rechercher_annonces","description":"Cherche des objets d'occasion en vente sur Merka (Suisse). Rend au plus 50 résultats, avec titre, prix en francs, état, catégorie et lien."},"obtenir_annonce":{"type":"object","properties":{"id":{"type":"string","description":"Identifiant rendu par la recherche"}},"required":["id"],"title":"obtenir_annonce","description":"Rend le détail d'une annonce à partir de son identifiant."},"lister_categories":{"type":"object","properties":{},"title":"lister_categories","description":"Rend les 61 familles du catalogue et le nombre d'annonces publiées."}}}}