[{"data":1,"prerenderedAt":2867},["ShallowReactive",2],{"blog-little-hotelier-mcp-claude-code-cursor-vscode-fr":3,"blog-langs-little-hotelier-mcp-claude-code-cursor-vscode":2408,"blog-list-fr":2417},{"id":4,"title":5,"body":6,"description":2365,"extension":2366,"meta":2367,"navigation":1042,"path":2404,"seo":2405,"stem":2406,"__hash__":2407},"content/blog/fr/little-hotelier-mcp-claude-code-cursor-vscode.md","Claude Code, Cursor et VS Code : utiliser vos données Little Hotelier via MCP",{"type":7,"value":8,"toc":2347},"minimark",[9,22,25,30,45,87,93,96,106,140,157,160,164,167,172,181,217,235,269,275,370,385,389,405,463,478,482,506,650,666,674,678,697,755,758,783,842,852,855,970,974,987,991,994,1005,1008,1551,1562,1566,1573,2060,2078,2082,2087,2090,2094,2165,2171,2175,2178,2227,2231,2307,2310,2314,2343],[10,11,12,13,17,18,21],"p",{},"Ajoutez un serveur MCP distant, ",[14,15,16],"code",{},"https://dashboard.hotelier.tools/api/mcp",", avec une clé API Hotelier Tools, et Claude Code, Cursor, VS Code (mode agent de Copilot), Windsurf ou Gemini CLI peuvent lire vos réservations, tarifs et factures Little Hotelier pendant qu'ils écrivent du code pour vous. Dans Claude Code, une seule commande suffit : ",[14,19,20],{},"claude mcp add --transport http hotelier-tools https://dashboard.hotelier.tools/api/mcp --header \"Authorization: Bearer htk_YOUR_API_KEY\"",".",[10,23,24],{},"Voici les configurations exactes pour chaque outil (vérifiées dans la documentation de chaque éditeur en octobre 2026), trois idées à réaliser, et les cas où il vaut mieux appeler directement l'API REST.",[26,27,29],"h2",{"id":28},"avant-de-commencer-créer-une-clé-api","Avant de commencer : créer une clé API",[10,31,32,33,40,41],{},"Little Hotelier ne publie pas de serveur MCP, et la documentation de l'API partenaire de SiteMinder indique elle-même que les données de disponibilités et de tarifs ",[34,35,39],"a",{"href":36,"rel":37},"https://developer.siteminder.com/smx-api/reference/availability-and-rates/publishers",[38],"nofollow","ne peuvent pas être obtenues auprès de Little Hotelier",". Hotelier Tools fournit à la fois un serveur MCP et une API REST, avec les identifiants Little Hotelier de votre établissement. Il n'est ni affilié à SiteMinder ou à Little Hotelier, ni approuvé par eux. Contexte : ",[34,42,44],{"href":43},"/blog/little-hotelier-api","Little Hotelier a-t-il une API ?",[46,47,48,61,71,81],"ol",{},[49,50,51,52,56,57,60],"li",{},"Dans Hotelier Tools, connectez Little Hotelier dans ",[53,54,55],"strong",{},"Credentials"," (",[14,58,59],{},"/credentials",") si ce n'est pas encore fait.",[49,62,63,64,56,67,70],{},"Ouvrez ",[53,65,66],{},"Developer → API & MCP → API Keys",[14,68,69],{},"/developer/api-keys",").",[49,72,73,74,77,78,21],{},"Saisissez un nom qui indique où la clé sera utilisée, comme ",[14,75,76],{},"cursor-laptop",", et cliquez sur ",[53,79,80],{},"Generate key",[49,82,83,84,21],{},"Copiez-la immédiatement : « Copy this key now — it will not be shown again. » Elle commence par ",[14,85,86],{},"htk_",[88,89],"screenshot",{"alt":90,"caption":91,"path":69,"src":92},"Page API keys dans Hotelier Tools : le formulaire Generate a new key avec un champ de nom et le bouton Generate key, une clé active (MCP internal (chat), masquée) avec un bouton Revoke, et les conseils Good security practice","Avec une clé par outil, vous révoquez facilement celle dont vous n'avez plus besoin.","/images/blog/demo/en/api-keys.webp",[10,94,95],{},"Une clé a les mêmes autorisations que votre compte Hotelier Tools, sur l'unique établissement où vous l'avez créée. Vous pouvez avoir jusqu'à 10 clés.",[10,97,98,101,102,105],{},[53,99,100],{},"Gardez la clé hors de vos fichiers."," Stockez-la dans une variable d'environnement nommée ",[14,103,104],{},"HT_API_KEY"," et référencez-la depuis les configurations :",[107,108,114],"pre",{"className":109,"code":110,"filename":111,"language":112,"meta":113,"style":113},"language-bash shiki shiki-themes github-light github-dark","echo 'export HT_API_KEY=\"htk_YOUR_API_KEY\"' >> ~/.zshrc   # ou ~/.bashrc\n","macOS / Linux","bash","",[14,115,116],{"__ignoreMap":113},[117,118,121,125,129,133,136],"span",{"class":119,"line":120},"line",1,[117,122,124],{"class":123},"sj4cs","echo",[117,126,128],{"class":127},"sZZnC"," 'export HT_API_KEY=\"htk_YOUR_API_KEY\"'",[117,130,132],{"class":131},"szBVR"," >>",[117,134,135],{"class":127}," ~/.zshrc",[117,137,139],{"class":138},"sJ8bj","   # ou ~/.bashrc\n",[107,141,146],{"className":142,"code":143,"filename":144,"language":145,"meta":113,"style":113},"language-powershell shiki shiki-themes github-light github-dark","setx HT_API_KEY \"htk_YOUR_API_KEY\"\n","Windows PowerShell","powershell",[14,147,148],{"__ignoreMap":113},[117,149,150,154],{"class":119,"line":120},[117,151,153],{"class":152},"sVt8B","setx HT_API_KEY ",[117,155,156],{"class":127},"\"htk_YOUR_API_KEY\"\n",[10,158,159],{},"Ouvrez un nouveau terminal (et redémarrez votre éditeur) pour qu'il prenne en compte la variable.",[26,161,163],{"id":162},"comment-ajouter-le-serveur-mcp-à-claude-code-cursor-vs-code-windsurf-et-gemini-cli","Comment ajouter le serveur MCP à Claude Code, Cursor, VS Code, Windsurf et Gemini CLI",[10,165,166],{},"Chaque outil stocke les trois mêmes informations (adresse, transport, clé) dans un fichier un peu différent. Choisissez le vôtre.",[168,169,171],"h3",{"id":170},"claude-code","Claude Code",[10,173,174,175,180],{},"Claude Code a une commande intégrée pour les serveurs distants (",[34,176,179],{"href":177,"rel":178},"https://code.claude.com/docs/en/mcp",[38],"documentation d'Anthropic",") :",[107,182,185],{"className":109,"code":183,"filename":184,"language":112,"meta":113,"style":113},"claude mcp add --transport http hotelier-tools https://dashboard.hotelier.tools/api/mcp --header \"Authorization: Bearer htk_YOUR_API_KEY\"\n","Terminal",[14,186,187],{"__ignoreMap":113},[117,188,189,193,196,199,202,205,208,211,214],{"class":119,"line":120},[117,190,192],{"class":191},"sScJk","claude",[117,194,195],{"class":127}," mcp",[117,197,198],{"class":127}," add",[117,200,201],{"class":123}," --transport",[117,203,204],{"class":127}," http",[117,206,207],{"class":127}," hotelier-tools",[117,209,210],{"class":127}," https://dashboard.hotelier.tools/api/mcp",[117,212,213],{"class":123}," --header",[117,215,216],{"class":127}," \"Authorization: Bearer htk_YOUR_API_KEY\"\n",[10,218,219,220,222,223,226,227,230,231,234],{},"Lancez ensuite ",[14,221,192],{}," et tapez ",[14,224,225],{},"/mcp",". Hotelier Tools doit apparaître comme ",[53,228,229],{},"connected"," ; un statut ",[14,232,233],{},"failed"," avec une erreur 401 signifie que la clé est incorrecte.",[236,237,238,256],"ul",{},[49,239,240,243,244,247,248,251,252,255],{},[53,241,242],{},"Portée."," Par défaut, le serveur est enregistré pour le dossier courant seulement. Ajoutez ",[14,245,246],{},"--scope user"," après le nom pour l'utiliser dans tous les projets, ou ",[14,249,250],{},"--scope project"," pour écrire un ",[14,253,254],{},".mcp.json"," partagé.",[49,257,258,261,262,265,266,268],{},[53,259,260],{},"Se connecter plutôt qu'utiliser une clé."," Lancez la commande sans ",[14,263,264],{},"--header",", puis dans Claude Code tapez ",[14,267,225],{}," et authentifiez-vous dans le navigateur. Si vous avez déjà connecté Hotelier Tools comme connecteur sur claude.ai, Claude Code peut le récupérer quand vous vous connectez avec le même compte Claude.",[10,270,271,272,274],{},"Pour un projet que vous partagez avec un collègue ou que vous gardez dans Git, placez le serveur dans ",[14,273,254],{}," et laissez chacun fournir sa propre clé :",[107,276,280],{"className":277,"code":278,"filename":254,"language":279,"meta":113,"style":113},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"hotelier-tools\": {\n      \"type\": \"http\",\n      \"url\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${HT_API_KEY}\" }\n    }\n  }\n}\n","json",[14,281,282,287,296,304,319,332,352,358,364],{"__ignoreMap":113},[117,283,284],{"class":119,"line":120},[117,285,286],{"class":152},"{\n",[117,288,290,293],{"class":119,"line":289},2,[117,291,292],{"class":123},"  \"mcpServers\"",[117,294,295],{"class":152},": {\n",[117,297,299,302],{"class":119,"line":298},3,[117,300,301],{"class":123},"    \"hotelier-tools\"",[117,303,295],{"class":152},[117,305,307,310,313,316],{"class":119,"line":306},4,[117,308,309],{"class":123},"      \"type\"",[117,311,312],{"class":152},": ",[117,314,315],{"class":127},"\"http\"",[117,317,318],{"class":152},",\n",[117,320,322,325,327,330],{"class":119,"line":321},5,[117,323,324],{"class":123},"      \"url\"",[117,326,312],{"class":152},[117,328,329],{"class":127},"\"https://dashboard.hotelier.tools/api/mcp\"",[117,331,318],{"class":152},[117,333,335,338,341,344,346,349],{"class":119,"line":334},6,[117,336,337],{"class":123},"      \"headers\"",[117,339,340],{"class":152},": { ",[117,342,343],{"class":123},"\"Authorization\"",[117,345,312],{"class":152},[117,347,348],{"class":127},"\"Bearer ${HT_API_KEY}\"",[117,350,351],{"class":152}," }\n",[117,353,355],{"class":119,"line":354},7,[117,356,357],{"class":152},"    }\n",[117,359,361],{"class":119,"line":360},8,[117,362,363],{"class":152},"  }\n",[117,365,367],{"class":119,"line":366},9,[117,368,369],{"class":152},"}\n",[10,371,372,373,376,377,380,381,384],{},"La ligne ",[14,374,375],{},"\"type\": \"http\""," est obligatoire : Claude Code considère une entrée avec ",[14,378,379],{},"url"," mais sans ",[14,382,383],{},"type"," comme une erreur de configuration.",[168,386,388],{"id":387},"cursor","Cursor",[10,390,391,392,395,396,399,400,180],{},"Cursor lit ",[14,393,394],{},"~/.cursor/mcp.json"," pour tous les projets, ou ",[14,397,398],{},".cursor/mcp.json"," à l'intérieur d'un projet (",[34,401,404],{"href":402,"rel":403},"https://cursor.com/docs/context/mcp",[38],"documentation Cursor",[107,406,408],{"className":277,"code":407,"filename":394,"language":279,"meta":113,"style":113},"{\n  \"mcpServers\": {\n    \"hotelier-tools\": {\n      \"url\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${env:HT_API_KEY}\" }\n    }\n  }\n}\n",[14,409,410,414,420,426,436,451,455,459],{"__ignoreMap":113},[117,411,412],{"class":119,"line":120},[117,413,286],{"class":152},[117,415,416,418],{"class":119,"line":289},[117,417,292],{"class":123},[117,419,295],{"class":152},[117,421,422,424],{"class":119,"line":298},[117,423,301],{"class":123},[117,425,295],{"class":152},[117,427,428,430,432,434],{"class":119,"line":306},[117,429,324],{"class":123},[117,431,312],{"class":152},[117,433,329],{"class":127},[117,435,318],{"class":152},[117,437,438,440,442,444,446,449],{"class":119,"line":321},[117,439,337],{"class":123},[117,441,340],{"class":152},[117,443,343],{"class":123},[117,445,312],{"class":152},[117,447,448],{"class":127},"\"Bearer ${env:HT_API_KEY}\"",[117,450,351],{"class":152},[117,452,453],{"class":119,"line":334},[117,454,357],{"class":152},[117,456,457],{"class":119,"line":354},[117,458,363],{"class":152},[117,460,461],{"class":119,"line":360},[117,462,369],{"class":152},[10,464,465,466,469,470,473,474,477],{},"Enregistrez, puis vérifiez que le serveur est activé dans les réglages MCP de Cursor (les versions récentes listent les serveurs sous ",[53,467,468],{},"Customize"," dans la barre latérale). Posez vos questions dans le chat ",[53,471,472],{},"Agent",". Cursor demande par défaut une validation avant d'exécuter un outil ; gardez ce réglage pour ce serveur. Si vous omettez ",[14,475,476],{},"headers",", Cursor propose la connexion par le navigateur.",[168,479,481],{"id":480},"vs-code-avec-github-copilot","VS Code avec GitHub Copilot",[10,483,484,485,488,489,492,493,495,496,501,502,505],{},"VS Code utilise ",[14,486,487],{},".vscode/mcp.json",", avec ",[14,490,491],{},"servers"," comme clé principale et un ",[14,494,375],{}," obligatoire (",[34,497,500],{"href":498,"rel":499},"https://code.visualstudio.com/docs/agents/reference/mcp-configuration",[38],"documentation VS Code","). Sa fonction ",[14,503,504],{},"inputs"," demande la clé une fois et la conserve dans le stockage sécurisé de VS Code : elle ne figure donc jamais dans le fichier :",[107,507,509],{"className":277,"code":508,"filename":487,"language":279,"meta":113,"style":113},"{\n  \"inputs\": [\n    {\n      \"type\": \"promptString\",\n      \"id\": \"ht-api-key\",\n      \"description\": \"Hotelier Tools API key (htk_…)\",\n      \"password\": true\n    }\n  ],\n  \"servers\": {\n    \"hotelier-tools\": {\n      \"type\": \"http\",\n      \"url\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${input:ht-api-key}\" }\n    }\n  }\n}\n",[14,510,511,515,523,528,539,551,563,573,577,582,590,597,608,619,635,640,645],{"__ignoreMap":113},[117,512,513],{"class":119,"line":120},[117,514,286],{"class":152},[117,516,517,520],{"class":119,"line":289},[117,518,519],{"class":123},"  \"inputs\"",[117,521,522],{"class":152},": [\n",[117,524,525],{"class":119,"line":298},[117,526,527],{"class":152},"    {\n",[117,529,530,532,534,537],{"class":119,"line":306},[117,531,309],{"class":123},[117,533,312],{"class":152},[117,535,536],{"class":127},"\"promptString\"",[117,538,318],{"class":152},[117,540,541,544,546,549],{"class":119,"line":321},[117,542,543],{"class":123},"      \"id\"",[117,545,312],{"class":152},[117,547,548],{"class":127},"\"ht-api-key\"",[117,550,318],{"class":152},[117,552,553,556,558,561],{"class":119,"line":334},[117,554,555],{"class":123},"      \"description\"",[117,557,312],{"class":152},[117,559,560],{"class":127},"\"Hotelier Tools API key (htk_…)\"",[117,562,318],{"class":152},[117,564,565,568,570],{"class":119,"line":354},[117,566,567],{"class":123},"      \"password\"",[117,569,312],{"class":152},[117,571,572],{"class":123},"true\n",[117,574,575],{"class":119,"line":360},[117,576,357],{"class":152},[117,578,579],{"class":119,"line":366},[117,580,581],{"class":152},"  ],\n",[117,583,585,588],{"class":119,"line":584},10,[117,586,587],{"class":123},"  \"servers\"",[117,589,295],{"class":152},[117,591,593,595],{"class":119,"line":592},11,[117,594,301],{"class":123},[117,596,295],{"class":152},[117,598,600,602,604,606],{"class":119,"line":599},12,[117,601,309],{"class":123},[117,603,312],{"class":152},[117,605,315],{"class":127},[117,607,318],{"class":152},[117,609,611,613,615,617],{"class":119,"line":610},13,[117,612,324],{"class":123},[117,614,312],{"class":152},[117,616,329],{"class":127},[117,618,318],{"class":152},[117,620,622,624,626,628,630,633],{"class":119,"line":621},14,[117,623,337],{"class":123},[117,625,340],{"class":152},[117,627,343],{"class":123},[117,629,312],{"class":152},[117,631,632],{"class":127},"\"Bearer ${input:ht-api-key}\"",[117,634,351],{"class":152},[117,636,638],{"class":119,"line":637},15,[117,639,357],{"class":152},[117,641,643],{"class":119,"line":642},16,[117,644,363],{"class":152},[117,646,648],{"class":119,"line":647},17,[117,649,369],{"class":152},[10,651,652,653,655,656,659,660,663,664,21],{},"Ouvrez Copilot Chat, passez en mode ",[53,654,472],{}," et utilisez ",[53,657,658],{},"Configure Tools"," pour voir les outils Hotelier Tools. VS Code peut vous demander de faire confiance au serveur lors de son premier démarrage. Pour tous les espaces de travail, lancez ",[53,661,662],{},"MCP: Open User Configuration"," et collez-y le même bloc. VS Code prend aussi en charge la connexion par le navigateur si vous omettez ",[14,665,476],{},[88,667],{"alt":668,"caption":669,"path":670,"src":671,"height":672,"width":673},"Onglet VS Code / GitHub Copilot de la page MCP setup de Hotelier Tools : un extrait .vscode/mcp.json avec servers, hotelier-tools, type http, l'URL /api/mcp de la démo et un en-tête Authorization avec l'espace réservé htk_YOUR_API_KEY, puis Turn on Agent mode in Copilot Chat","La page MCP Setup propose un extrait prêt à l'emploi pour chaque client. La démo affiche sa propre adresse ; la vôtre est dashboard.hotelier.tools.","/developer/mcp-setup","/images/blog/demo/en/mcp-config-vscode-copilot.webp",446,1036,[168,675,677],{"id":676},"windsurf-et-gemini-cli","Windsurf et Gemini CLI",[10,679,680,683,684,687,688,691,692,180],{},[53,681,682],{},"Windsurf"," (dont la documentation est désormais hébergée chez Devin) lit ",[14,685,686],{},"~/.codeium/windsurf/mcp_config.json"," et utilise ",[14,689,690],{},"serverUrl"," pour les serveurs distants (",[34,693,696],{"href":694,"rel":695},"https://docs.devin.ai/windsurf/plugins/cascade/mcp",[38],"documentation",[107,698,700],{"className":277,"code":699,"filename":686,"language":279,"meta":113,"style":113},"{\n  \"mcpServers\": {\n    \"hotelier-tools\": {\n      \"serverUrl\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${env:HT_API_KEY}\" }\n    }\n  }\n}\n",[14,701,702,706,712,718,729,743,747,751],{"__ignoreMap":113},[117,703,704],{"class":119,"line":120},[117,705,286],{"class":152},[117,707,708,710],{"class":119,"line":289},[117,709,292],{"class":123},[117,711,295],{"class":152},[117,713,714,716],{"class":119,"line":298},[117,715,301],{"class":123},[117,717,295],{"class":152},[117,719,720,723,725,727],{"class":119,"line":306},[117,721,722],{"class":123},"      \"serverUrl\"",[117,724,312],{"class":152},[117,726,329],{"class":127},[117,728,318],{"class":152},[117,730,731,733,735,737,739,741],{"class":119,"line":321},[117,732,337],{"class":123},[117,734,340],{"class":152},[117,736,343],{"class":123},[117,738,312],{"class":152},[117,740,448],{"class":127},[117,742,351],{"class":152},[117,744,745],{"class":119,"line":334},[117,746,357],{"class":152},[117,748,749],{"class":119,"line":354},[117,750,363],{"class":152},[117,752,753],{"class":119,"line":360},[117,754,369],{"class":152},[10,756,757],{},"Windsurf limite Cascade à 100 outils au total, et Hotelier Tools en propose plus de 100 : vous devrez peut-être désactiver les outils inutiles dans le panneau MCP.",[10,759,760,763,764,767,768,771,772,775,776,778,779,180],{},[53,761,762],{},"Gemini CLI"," lit ",[14,765,766],{},"~/.gemini/settings.json"," (ou ",[14,769,770],{},".gemini/settings.json"," dans un projet) et utilise ",[14,773,774],{},"httpUrl"," pour ce type de serveur ; ",[14,777,379],{}," désignerait l'ancien transport SSE, que Hotelier Tools ne sert pas (",[34,780,696],{"href":781,"rel":782},"https://geminicli.com/docs/tools/mcp-server/",[38],[107,784,786],{"className":277,"code":785,"filename":766,"language":279,"meta":113,"style":113},"{\n  \"mcpServers\": {\n    \"hotelier-tools\": {\n      \"httpUrl\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer $HT_API_KEY\" }\n    }\n  }\n}\n",[14,787,788,792,798,804,815,830,834,838],{"__ignoreMap":113},[117,789,790],{"class":119,"line":120},[117,791,286],{"class":152},[117,793,794,796],{"class":119,"line":289},[117,795,292],{"class":123},[117,797,295],{"class":152},[117,799,800,802],{"class":119,"line":298},[117,801,301],{"class":123},[117,803,295],{"class":152},[117,805,806,809,811,813],{"class":119,"line":306},[117,807,808],{"class":123},"      \"httpUrl\"",[117,810,312],{"class":152},[117,812,329],{"class":127},[117,814,318],{"class":152},[117,816,817,819,821,823,825,828],{"class":119,"line":321},[117,818,337],{"class":123},[117,820,340],{"class":152},[117,822,343],{"class":123},[117,824,312],{"class":152},[117,826,827],{"class":127},"\"Bearer $HT_API_KEY\"",[117,829,351],{"class":152},[117,831,832],{"class":119,"line":334},[117,833,357],{"class":152},[117,835,836],{"class":119,"line":354},[117,837,363],{"class":152},[117,839,840],{"class":119,"line":360},[117,841,369],{"class":152},[10,843,844,845,848,849,851],{},"Ou depuis le terminal : ",[14,846,847],{},"gemini mcp add --transport http --header \"Authorization: Bearer htk_YOUR_API_KEY\" hotelier-tools https://dashboard.hotelier.tools/api/mcp",". Tapez ",[14,850,225],{}," dans Gemini CLI pour vérifier.",[10,853,854],{},"Ces deux configurations suivent la documentation de chaque éditeur ; nous ne les avons pas testées dans toutes les versions.",[856,857,858,877],"table",{},[859,860,861],"thead",{},[862,863,864,868,871,874],"tr",{},[865,866,867],"th",{},"Outil",[865,869,870],{},"Fichier de configuration",[865,872,873],{},"Clé principale",[865,875,876],{},"Clé d'URL",[878,879,880,901,917,936,953],"tbody",{},[862,881,882,885,889,894],{},[883,884,171],"td",{},[883,886,887],{},[14,888,254],{},[883,890,891],{},[14,892,893],{},"mcpServers",[883,895,896,898,899],{},[14,897,379],{}," + ",[14,900,375],{},[862,902,903,905,909,913],{},[883,904,388],{},[883,906,907],{},[14,908,398],{},[883,910,911],{},[14,912,893],{},[883,914,915],{},[14,916,379],{},[862,918,919,922,926,930],{},[883,920,921],{},"VS Code",[883,923,924],{},[14,925,487],{},[883,927,928],{},[14,929,491],{},[883,931,932,898,934],{},[14,933,379],{},[14,935,375],{},[862,937,938,940,945,949],{},[883,939,682],{},[883,941,942],{},[14,943,944],{},"mcp_config.json",[883,946,947],{},[14,948,893],{},[883,950,951],{},[14,952,690],{},[862,954,955,957,962,966],{},[883,956,762],{},[883,958,959],{},[14,960,961],{},"settings.json",[883,963,964],{},[14,965,893],{},[883,967,968],{},[14,969,774],{},[26,971,973],{"id":972},"trois-idées-à-réaliser","Trois idées à réaliser",[10,975,976,977,981,982,986],{},"L'astuce est de laisser l'agent utiliser MCP pour ",[978,979,980],"em",{},"regarder"," vos vraies données, puis d'écrire du code qui appelle l'",[34,983,985],{"href":984},"/tools/bot/api-mcp","API REST"," pour que le résultat tourne chaque mois sans IA.",[168,988,990],{"id":989},"un-rapport-doccupation-mensuel","Un rapport d'occupation mensuel",[10,992,993],{},"Demandez à Claude Code (ou à l'agent de Cursor) dans un dossier vide :",[995,996,997],"prompt",{"label":171},[10,998,999,1000,1004],{},"Utilise le serveur MCP hotelier-tools pour examiner mes types de chambres et les réservations du mois dernier. Écris ensuite un script Node.js qui appelle l'API REST de Hotelier Tools (spécification : ",[34,1001,1002],{"href":1002,"rel":1003},"https://dashboard.hotelier.tools/api/v1/openapi.json",[38],") avec la clé stockée dans HT_API_KEY, et qui, pour n'importe quel mois que je lui donne, affiche le taux d'occupation et le prix moyen par nuit pour chaque type de chambre, puis les enregistre dans un fichier CSV.",[10,1006,1007],{},"Un bon script commence ainsi. Il récupère les types de chambres et toutes les réservations qui chevauchent le mois, et enregistre la réponse brute pour que vous puissiez vérifier les champs avant de faire des calculs :",[107,1009,1014],{"className":1010,"code":1011,"filename":1012,"language":1013,"meta":113,"style":113},"language-js shiki shiki-themes github-light github-dark","// Utilisation : node fetch-month.mjs 2026-09   (HT_API_KEY doit être dans votre environnement)\nimport { writeFile } from \"node:fs/promises\";\n\nconst API = \"https://dashboard.hotelier.tools/api/v1\";\nconst headers = {\n  Authorization: `Bearer ${process.env.HT_API_KEY}`,\n  \"Content-Type\": \"application/json\",\n};\n\nasync function call(path, options = {}) {\n  const res = await fetch(`${API}${path}`, { ...options, headers });\n  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);\n  return res.json();\n}\n\nconst month = process.argv[2];\nconst [year, mon] = month.split(\"-\").map(Number);\nconst startDate = `${month}-01`;\nconst endDate = new Date(Date.UTC(year, mon, 0)).toISOString().slice(0, 10);\n\nconst roomTypes = await call(\"/room-types\");\nconst reservations = await call(\"/methods/getReservationsByDateRange\", {\n  method: \"POST\",\n  body: JSON.stringify({ params: { startDate, endDate } }),\n});\n\nawait writeFile(\n  `raw-${month}.json`,\n  JSON.stringify({ roomTypes: roomTypes.data, reservations: reservations.result }, null, 2)\n);\nconsole.log(`Saved raw-${month}.json`);\n","fetch-month.mjs","js",[14,1015,1016,1021,1038,1044,1060,1072,1097,1109,1114,1118,1147,1187,1242,1255,1259,1263,1281,1321,1342,1392,1397,1418,1440,1451,1468,1474,1479,1490,1503,1526,1531],{"__ignoreMap":113},[117,1017,1018],{"class":119,"line":120},[117,1019,1020],{"class":138},"// Utilisation : node fetch-month.mjs 2026-09   (HT_API_KEY doit être dans votre environnement)\n",[117,1022,1023,1026,1029,1032,1035],{"class":119,"line":289},[117,1024,1025],{"class":131},"import",[117,1027,1028],{"class":152}," { writeFile } ",[117,1030,1031],{"class":131},"from",[117,1033,1034],{"class":127}," \"node:fs/promises\"",[117,1036,1037],{"class":152},";\n",[117,1039,1040],{"class":119,"line":298},[117,1041,1043],{"emptyLinePlaceholder":1042},true,"\n",[117,1045,1046,1049,1052,1055,1058],{"class":119,"line":306},[117,1047,1048],{"class":131},"const",[117,1050,1051],{"class":123}," API",[117,1053,1054],{"class":131}," =",[117,1056,1057],{"class":127}," \"https://dashboard.hotelier.tools/api/v1\"",[117,1059,1037],{"class":152},[117,1061,1062,1064,1067,1069],{"class":119,"line":321},[117,1063,1048],{"class":131},[117,1065,1066],{"class":123}," headers",[117,1068,1054],{"class":131},[117,1070,1071],{"class":152}," {\n",[117,1073,1074,1077,1080,1083,1085,1088,1090,1092,1095],{"class":119,"line":334},[117,1075,1076],{"class":152},"  Authorization: ",[117,1078,1079],{"class":127},"`Bearer ${",[117,1081,1082],{"class":152},"process",[117,1084,21],{"class":127},[117,1086,1087],{"class":152},"env",[117,1089,21],{"class":127},[117,1091,104],{"class":123},[117,1093,1094],{"class":127},"}`",[117,1096,318],{"class":152},[117,1098,1099,1102,1104,1107],{"class":119,"line":354},[117,1100,1101],{"class":127},"  \"Content-Type\"",[117,1103,312],{"class":152},[117,1105,1106],{"class":127},"\"application/json\"",[117,1108,318],{"class":152},[117,1110,1111],{"class":119,"line":360},[117,1112,1113],{"class":152},"};\n",[117,1115,1116],{"class":119,"line":366},[117,1117,1043],{"emptyLinePlaceholder":1042},[117,1119,1120,1123,1126,1129,1132,1136,1139,1142,1144],{"class":119,"line":584},[117,1121,1122],{"class":131},"async",[117,1124,1125],{"class":131}," function",[117,1127,1128],{"class":191}," call",[117,1130,1131],{"class":152},"(",[117,1133,1135],{"class":1134},"s4XuR","path",[117,1137,1138],{"class":152},", ",[117,1140,1141],{"class":1134},"options",[117,1143,1054],{"class":131},[117,1145,1146],{"class":152}," {}) {\n",[117,1148,1149,1152,1155,1157,1160,1163,1165,1168,1171,1174,1176,1178,1181,1184],{"class":119,"line":592},[117,1150,1151],{"class":131},"  const",[117,1153,1154],{"class":123}," res",[117,1156,1054],{"class":131},[117,1158,1159],{"class":131}," await",[117,1161,1162],{"class":191}," fetch",[117,1164,1131],{"class":152},[117,1166,1167],{"class":127},"`${",[117,1169,1170],{"class":123},"API",[117,1172,1173],{"class":127},"}${",[117,1175,1135],{"class":152},[117,1177,1094],{"class":127},[117,1179,1180],{"class":152},", { ",[117,1182,1183],{"class":131},"...",[117,1185,1186],{"class":152},"options, headers });\n",[117,1188,1189,1192,1194,1197,1200,1203,1206,1209,1211,1213,1216,1218,1221,1224,1227,1229,1231,1234,1237,1239],{"class":119,"line":599},[117,1190,1191],{"class":131},"  if",[117,1193,56],{"class":152},[117,1195,1196],{"class":131},"!",[117,1198,1199],{"class":152},"res.ok) ",[117,1201,1202],{"class":131},"throw",[117,1204,1205],{"class":131}," new",[117,1207,1208],{"class":191}," Error",[117,1210,1131],{"class":152},[117,1212,1167],{"class":127},[117,1214,1215],{"class":152},"res",[117,1217,21],{"class":127},[117,1219,1220],{"class":152},"status",[117,1222,1223],{"class":127},"} ${",[117,1225,1226],{"class":131},"await",[117,1228,1154],{"class":152},[117,1230,21],{"class":127},[117,1232,1233],{"class":191},"text",[117,1235,1236],{"class":127},"()",[117,1238,1094],{"class":127},[117,1240,1241],{"class":152},");\n",[117,1243,1244,1247,1250,1252],{"class":119,"line":610},[117,1245,1246],{"class":131},"  return",[117,1248,1249],{"class":152}," res.",[117,1251,279],{"class":191},[117,1253,1254],{"class":152},"();\n",[117,1256,1257],{"class":119,"line":621},[117,1258,369],{"class":152},[117,1260,1261],{"class":119,"line":637},[117,1262,1043],{"emptyLinePlaceholder":1042},[117,1264,1265,1267,1270,1272,1275,1278],{"class":119,"line":642},[117,1266,1048],{"class":131},[117,1268,1269],{"class":123}," month",[117,1271,1054],{"class":131},[117,1273,1274],{"class":152}," process.argv[",[117,1276,1277],{"class":123},"2",[117,1279,1280],{"class":152},"];\n",[117,1282,1283,1285,1288,1291,1293,1296,1299,1302,1305,1308,1310,1313,1315,1318],{"class":119,"line":647},[117,1284,1048],{"class":131},[117,1286,1287],{"class":152}," [",[117,1289,1290],{"class":123},"year",[117,1292,1138],{"class":152},[117,1294,1295],{"class":123},"mon",[117,1297,1298],{"class":152},"] ",[117,1300,1301],{"class":131},"=",[117,1303,1304],{"class":152}," month.",[117,1306,1307],{"class":191},"split",[117,1309,1131],{"class":152},[117,1311,1312],{"class":127},"\"-\"",[117,1314,70],{"class":152},[117,1316,1317],{"class":191},"map",[117,1319,1320],{"class":152},"(Number);\n",[117,1322,1324,1326,1329,1331,1334,1337,1340],{"class":119,"line":1323},18,[117,1325,1048],{"class":131},[117,1327,1328],{"class":123}," startDate",[117,1330,1054],{"class":131},[117,1332,1333],{"class":127}," `${",[117,1335,1336],{"class":152},"month",[117,1338,1339],{"class":127},"}-01`",[117,1341,1037],{"class":152},[117,1343,1345,1347,1350,1352,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381,1383,1385,1387,1390],{"class":119,"line":1344},19,[117,1346,1048],{"class":131},[117,1348,1349],{"class":123}," endDate",[117,1351,1054],{"class":131},[117,1353,1205],{"class":131},[117,1355,1356],{"class":191}," Date",[117,1358,1359],{"class":152},"(Date.",[117,1361,1362],{"class":191},"UTC",[117,1364,1365],{"class":152},"(year, mon, ",[117,1367,1368],{"class":123},"0",[117,1370,1371],{"class":152},")).",[117,1373,1374],{"class":191},"toISOString",[117,1376,1377],{"class":152},"().",[117,1379,1380],{"class":191},"slice",[117,1382,1131],{"class":152},[117,1384,1368],{"class":123},[117,1386,1138],{"class":152},[117,1388,1389],{"class":123},"10",[117,1391,1241],{"class":152},[117,1393,1395],{"class":119,"line":1394},20,[117,1396,1043],{"emptyLinePlaceholder":1042},[117,1398,1400,1402,1405,1407,1409,1411,1413,1416],{"class":119,"line":1399},21,[117,1401,1048],{"class":131},[117,1403,1404],{"class":123}," roomTypes",[117,1406,1054],{"class":131},[117,1408,1159],{"class":131},[117,1410,1128],{"class":191},[117,1412,1131],{"class":152},[117,1414,1415],{"class":127},"\"/room-types\"",[117,1417,1241],{"class":152},[117,1419,1421,1423,1426,1428,1430,1432,1434,1437],{"class":119,"line":1420},22,[117,1422,1048],{"class":131},[117,1424,1425],{"class":123}," reservations",[117,1427,1054],{"class":131},[117,1429,1159],{"class":131},[117,1431,1128],{"class":191},[117,1433,1131],{"class":152},[117,1435,1436],{"class":127},"\"/methods/getReservationsByDateRange\"",[117,1438,1439],{"class":152},", {\n",[117,1441,1443,1446,1449],{"class":119,"line":1442},23,[117,1444,1445],{"class":152},"  method: ",[117,1447,1448],{"class":127},"\"POST\"",[117,1450,318],{"class":152},[117,1452,1454,1457,1460,1462,1465],{"class":119,"line":1453},24,[117,1455,1456],{"class":152},"  body: ",[117,1458,1459],{"class":123},"JSON",[117,1461,21],{"class":152},[117,1463,1464],{"class":191},"stringify",[117,1466,1467],{"class":152},"({ params: { startDate, endDate } }),\n",[117,1469,1471],{"class":119,"line":1470},25,[117,1472,1473],{"class":152},"});\n",[117,1475,1477],{"class":119,"line":1476},26,[117,1478,1043],{"emptyLinePlaceholder":1042},[117,1480,1482,1484,1487],{"class":119,"line":1481},27,[117,1483,1226],{"class":131},[117,1485,1486],{"class":191}," writeFile",[117,1488,1489],{"class":152},"(\n",[117,1491,1493,1496,1498,1501],{"class":119,"line":1492},28,[117,1494,1495],{"class":127},"  `raw-${",[117,1497,1336],{"class":152},[117,1499,1500],{"class":127},"}.json`",[117,1502,318],{"class":152},[117,1504,1506,1509,1511,1513,1516,1519,1521,1523],{"class":119,"line":1505},29,[117,1507,1508],{"class":123},"  JSON",[117,1510,21],{"class":152},[117,1512,1464],{"class":191},[117,1514,1515],{"class":152},"({ roomTypes: roomTypes.data, reservations: reservations.result }, ",[117,1517,1518],{"class":123},"null",[117,1520,1138],{"class":152},[117,1522,1277],{"class":123},[117,1524,1525],{"class":152},")\n",[117,1527,1529],{"class":119,"line":1528},30,[117,1530,1241],{"class":152},[117,1532,1534,1537,1540,1542,1545,1547,1549],{"class":119,"line":1533},31,[117,1535,1536],{"class":152},"console.",[117,1538,1539],{"class":191},"log",[117,1541,1131],{"class":152},[117,1543,1544],{"class":127},"`Saved raw-${",[117,1546,1336],{"class":152},[117,1548,1500],{"class":127},[117,1550,1241],{"class":152},[10,1552,1553,1554,1557,1558,1561],{},"La spécification de l'API indique elle-même que les objets de réservation proviennent de Little Hotelier et que leur « forme peut varier » : laissez donc l'agent lire le fichier enregistré avant de calculer quoi que ce soit. ",[14,1555,1556],{},"/room-types"," donne ",[14,1559,1560],{},"totalRooms"," par type, qui est l'autre moitié du calcul d'occupation.",[168,1563,1565],{"id":1564},"une-synchronisation-google-sheets","Une synchronisation Google Sheets",[10,1567,1568,1569,1572],{},"Pour une feuille qui liste les arrivées des 30 prochains jours et s'actualise chaque matin, ouvrez votre tableur, allez dans ",[53,1570,1571],{},"Extensions → Apps Script"," et collez :",[107,1574,1577],{"className":1010,"code":1575,"filename":1576,"language":1013,"meta":113,"style":113},"function syncArrivals() {\n  const key = PropertiesService.getScriptProperties().getProperty('HT_API_KEY');\n  const fmt = d => Utilities.formatDate(d, Session.getScriptTimeZone(), 'yyyy-MM-dd');\n  const today = new Date();\n  const in30 = new Date(today.getTime() + 30 * 24 * 60 * 60 * 1000);\n  const url = 'https://dashboard.hotelier.tools/api/v1/reservations'\n    + '?startDate=' + fmt(today) + '&endDate=' + fmt(in30) + '&limit=100';\n\n  const res = UrlFetchApp.fetch(url, {\n    headers: { Authorization: 'Bearer ' + key },\n    muteHttpExceptions: true,\n  });\n  if (res.getResponseCode() !== 200) throw new Error(res.getContentText());\n\n  const rows = JSON.parse(res.getContentText()).data.map(r => [\n    r.id, r.guestName, r.status, r.checkIn, r.checkOut, r.roomType, r.totalAmount,\n  ]);\n  const book = SpreadsheetApp.getActive();\n  const sheet = book.getSheetByName('Arrivals') || book.insertSheet('Arrivals');\n  sheet.clearContents();\n  sheet.appendRow(['ID', 'Guest', 'Status', 'Check-in', 'Check-out', 'Room type', 'Total']);\n  if (rows.length) sheet.getRange(2, 1, rows.length, rows[0].length).setValues(rows);\n}\n","Code.gs",[14,1578,1579,1590,1617,1652,1667,1717,1729,1764,1768,1785,1798,1808,1813,1849,1853,1889,1894,1899,1916,1952,1962,2008,2056],{"__ignoreMap":113},[117,1580,1581,1584,1587],{"class":119,"line":120},[117,1582,1583],{"class":131},"function",[117,1585,1586],{"class":191}," syncArrivals",[117,1588,1589],{"class":152},"() {\n",[117,1591,1592,1594,1597,1599,1602,1605,1607,1610,1612,1615],{"class":119,"line":289},[117,1593,1151],{"class":131},[117,1595,1596],{"class":123}," key",[117,1598,1054],{"class":131},[117,1600,1601],{"class":152}," PropertiesService.",[117,1603,1604],{"class":191},"getScriptProperties",[117,1606,1377],{"class":152},[117,1608,1609],{"class":191},"getProperty",[117,1611,1131],{"class":152},[117,1613,1614],{"class":127},"'HT_API_KEY'",[117,1616,1241],{"class":152},[117,1618,1619,1621,1624,1626,1629,1632,1635,1638,1641,1644,1647,1650],{"class":119,"line":298},[117,1620,1151],{"class":131},[117,1622,1623],{"class":191}," fmt",[117,1625,1054],{"class":131},[117,1627,1628],{"class":1134}," d",[117,1630,1631],{"class":131}," =>",[117,1633,1634],{"class":152}," Utilities.",[117,1636,1637],{"class":191},"formatDate",[117,1639,1640],{"class":152},"(d, Session.",[117,1642,1643],{"class":191},"getScriptTimeZone",[117,1645,1646],{"class":152},"(), ",[117,1648,1649],{"class":127},"'yyyy-MM-dd'",[117,1651,1241],{"class":152},[117,1653,1654,1656,1659,1661,1663,1665],{"class":119,"line":306},[117,1655,1151],{"class":131},[117,1657,1658],{"class":123}," today",[117,1660,1054],{"class":131},[117,1662,1205],{"class":131},[117,1664,1356],{"class":191},[117,1666,1254],{"class":152},[117,1668,1669,1671,1674,1676,1678,1680,1683,1686,1689,1692,1695,1698,1701,1703,1706,1708,1710,1712,1715],{"class":119,"line":321},[117,1670,1151],{"class":131},[117,1672,1673],{"class":123}," in30",[117,1675,1054],{"class":131},[117,1677,1205],{"class":131},[117,1679,1356],{"class":191},[117,1681,1682],{"class":152},"(today.",[117,1684,1685],{"class":191},"getTime",[117,1687,1688],{"class":152},"() ",[117,1690,1691],{"class":131},"+",[117,1693,1694],{"class":123}," 30",[117,1696,1697],{"class":131}," *",[117,1699,1700],{"class":123}," 24",[117,1702,1697],{"class":131},[117,1704,1705],{"class":123}," 60",[117,1707,1697],{"class":131},[117,1709,1705],{"class":123},[117,1711,1697],{"class":131},[117,1713,1714],{"class":123}," 1000",[117,1716,1241],{"class":152},[117,1718,1719,1721,1724,1726],{"class":119,"line":334},[117,1720,1151],{"class":131},[117,1722,1723],{"class":123}," url",[117,1725,1054],{"class":131},[117,1727,1728],{"class":127}," 'https://dashboard.hotelier.tools/api/v1/reservations'\n",[117,1730,1731,1734,1737,1740,1742,1745,1747,1750,1752,1754,1757,1759,1762],{"class":119,"line":354},[117,1732,1733],{"class":131},"    +",[117,1735,1736],{"class":127}," '?startDate='",[117,1738,1739],{"class":131}," +",[117,1741,1623],{"class":191},[117,1743,1744],{"class":152},"(today) ",[117,1746,1691],{"class":131},[117,1748,1749],{"class":127}," '&endDate='",[117,1751,1739],{"class":131},[117,1753,1623],{"class":191},[117,1755,1756],{"class":152},"(in30) ",[117,1758,1691],{"class":131},[117,1760,1761],{"class":127}," '&limit=100'",[117,1763,1037],{"class":152},[117,1765,1766],{"class":119,"line":360},[117,1767,1043],{"emptyLinePlaceholder":1042},[117,1769,1770,1772,1774,1776,1779,1782],{"class":119,"line":366},[117,1771,1151],{"class":131},[117,1773,1154],{"class":123},[117,1775,1054],{"class":131},[117,1777,1778],{"class":152}," UrlFetchApp.",[117,1780,1781],{"class":191},"fetch",[117,1783,1784],{"class":152},"(url, {\n",[117,1786,1787,1790,1793,1795],{"class":119,"line":584},[117,1788,1789],{"class":152},"    headers: { Authorization: ",[117,1791,1792],{"class":127},"'Bearer '",[117,1794,1739],{"class":131},[117,1796,1797],{"class":152}," key },\n",[117,1799,1800,1803,1806],{"class":119,"line":592},[117,1801,1802],{"class":152},"    muteHttpExceptions: ",[117,1804,1805],{"class":123},"true",[117,1807,318],{"class":152},[117,1809,1810],{"class":119,"line":599},[117,1811,1812],{"class":152},"  });\n",[117,1814,1815,1817,1820,1823,1825,1828,1831,1834,1836,1838,1840,1843,1846],{"class":119,"line":610},[117,1816,1191],{"class":131},[117,1818,1819],{"class":152}," (res.",[117,1821,1822],{"class":191},"getResponseCode",[117,1824,1688],{"class":152},[117,1826,1827],{"class":131},"!==",[117,1829,1830],{"class":123}," 200",[117,1832,1833],{"class":152},") ",[117,1835,1202],{"class":131},[117,1837,1205],{"class":131},[117,1839,1208],{"class":191},[117,1841,1842],{"class":152},"(res.",[117,1844,1845],{"class":191},"getContentText",[117,1847,1848],{"class":152},"());\n",[117,1850,1851],{"class":119,"line":621},[117,1852,1043],{"emptyLinePlaceholder":1042},[117,1854,1855,1857,1860,1862,1865,1867,1870,1872,1874,1877,1879,1881,1884,1886],{"class":119,"line":637},[117,1856,1151],{"class":131},[117,1858,1859],{"class":123}," rows",[117,1861,1054],{"class":131},[117,1863,1864],{"class":123}," JSON",[117,1866,21],{"class":152},[117,1868,1869],{"class":191},"parse",[117,1871,1842],{"class":152},[117,1873,1845],{"class":191},[117,1875,1876],{"class":152},"()).data.",[117,1878,1317],{"class":191},[117,1880,1131],{"class":152},[117,1882,1883],{"class":1134},"r",[117,1885,1631],{"class":131},[117,1887,1888],{"class":152}," [\n",[117,1890,1891],{"class":119,"line":642},[117,1892,1893],{"class":152},"    r.id, r.guestName, r.status, r.checkIn, r.checkOut, r.roomType, r.totalAmount,\n",[117,1895,1896],{"class":119,"line":647},[117,1897,1898],{"class":152},"  ]);\n",[117,1900,1901,1903,1906,1908,1911,1914],{"class":119,"line":1323},[117,1902,1151],{"class":131},[117,1904,1905],{"class":123}," book",[117,1907,1054],{"class":131},[117,1909,1910],{"class":152}," SpreadsheetApp.",[117,1912,1913],{"class":191},"getActive",[117,1915,1254],{"class":152},[117,1917,1918,1920,1923,1925,1928,1931,1933,1936,1938,1941,1943,1946,1948,1950],{"class":119,"line":1344},[117,1919,1151],{"class":131},[117,1921,1922],{"class":123}," sheet",[117,1924,1054],{"class":131},[117,1926,1927],{"class":152}," book.",[117,1929,1930],{"class":191},"getSheetByName",[117,1932,1131],{"class":152},[117,1934,1935],{"class":127},"'Arrivals'",[117,1937,1833],{"class":152},[117,1939,1940],{"class":131},"||",[117,1942,1927],{"class":152},[117,1944,1945],{"class":191},"insertSheet",[117,1947,1131],{"class":152},[117,1949,1935],{"class":127},[117,1951,1241],{"class":152},[117,1953,1954,1957,1960],{"class":119,"line":1394},[117,1955,1956],{"class":152},"  sheet.",[117,1958,1959],{"class":191},"clearContents",[117,1961,1254],{"class":152},[117,1963,1964,1966,1969,1972,1975,1977,1980,1982,1985,1987,1990,1992,1995,1997,2000,2002,2005],{"class":119,"line":1399},[117,1965,1956],{"class":152},[117,1967,1968],{"class":191},"appendRow",[117,1970,1971],{"class":152},"([",[117,1973,1974],{"class":127},"'ID'",[117,1976,1138],{"class":152},[117,1978,1979],{"class":127},"'Guest'",[117,1981,1138],{"class":152},[117,1983,1984],{"class":127},"'Status'",[117,1986,1138],{"class":152},[117,1988,1989],{"class":127},"'Check-in'",[117,1991,1138],{"class":152},[117,1993,1994],{"class":127},"'Check-out'",[117,1996,1138],{"class":152},[117,1998,1999],{"class":127},"'Room type'",[117,2001,1138],{"class":152},[117,2003,2004],{"class":127},"'Total'",[117,2006,2007],{"class":152},"]);\n",[117,2009,2010,2012,2015,2018,2021,2024,2026,2028,2030,2033,2036,2038,2041,2043,2046,2048,2050,2053],{"class":119,"line":1420},[117,2011,1191],{"class":131},[117,2013,2014],{"class":152}," (rows.",[117,2016,2017],{"class":123},"length",[117,2019,2020],{"class":152},") sheet.",[117,2022,2023],{"class":191},"getRange",[117,2025,1131],{"class":152},[117,2027,1277],{"class":123},[117,2029,1138],{"class":152},[117,2031,2032],{"class":123},"1",[117,2034,2035],{"class":152},", rows.",[117,2037,2017],{"class":123},[117,2039,2040],{"class":152},", rows[",[117,2042,1368],{"class":123},[117,2044,2045],{"class":152},"].",[117,2047,2017],{"class":123},[117,2049,70],{"class":152},[117,2051,2052],{"class":191},"setValues",[117,2054,2055],{"class":152},"(rows);\n",[117,2057,2058],{"class":119,"line":1442},[117,2059,369],{"class":152},[10,2061,2062,2063,2066,2067,2069,2070,2073,2074,2077],{},"Stockez la clé dans ",[53,2064,2065],{},"Project Settings → Script properties"," sous le nom ",[14,2068,104],{},", exécutez le script une fois pour accorder l'accès, puis ajoutez un déclencheur quotidien dans ",[53,2071,2072],{},"Triggers",". ",[14,2075,2076],{},"/reservations"," renvoie au maximum 100 séjours par appel, filtrés par date d'arrivée : découpez donc les mois chargés en semaines. N'oubliez pas que la feuille contient désormais des noms de clients : partagez-la avec prudence.",[168,2079,2081],{"id":2080},"un-petit-tableau-de-bord-sur-mesure","Un petit tableau de bord sur mesure",[995,2083,2084],{"label":388},[10,2085,2086],{},"Crée une petite application web Node.js qui affiche l'occupation de ce soir, les arrivées et départs du jour, et les séjours avec un solde impayé, en utilisant l'API REST de Hotelier Tools. Garde HT_API_KEY uniquement côté serveur : le navigateur doit appeler mon serveur, jamais l'API directement. Mets les réponses en cache pendant cinq minutes.",[10,2088,2089],{},"Deux règles rendent cela sûr : la clé reste sur le serveur (toute personne qui ouvre une page peut lire les clés présentes dans le code du navigateur), et vous mettez en cache, car l'API autorise 100 requêtes par minute et par adresse IP.",[26,2091,2093],{"id":2092},"mcp-ou-api-rest-lequel-utiliser","MCP ou API REST : lequel utiliser ?",[856,2095,2096,2107],{},[859,2097,2098],{},[862,2099,2100,2102,2105],{},[865,2101],{},[865,2103,2104],{},"Serveur MCP",[865,2106,985],{},[878,2108,2109,2120,2134,2149],{},[862,2110,2111,2114,2117],{},[883,2112,2113],{},"Idéal pour",[883,2115,2116],{},"Poser des questions, laisser un agent explorer pendant qu'il code",[883,2118,2119],{},"Scripts, Sheets, tableaux de bord exécutés de façon planifiée",[862,2121,2122,2125,2129],{},[883,2123,2124],{},"Adresse",[883,2126,2127],{},[14,2128,16],{},[883,2130,2131],{},[14,2132,2133],{},"https://dashboard.hotelier.tools/api/v1",[862,2135,2136,2139,2142],{},[883,2137,2138],{},"Authentification",[883,2140,2141],{},"Clé API ou connexion par le navigateur",[883,2143,2144,2145,2148],{},"Clé API (",[14,2146,2147],{},"Authorization: Bearer htk_…",")",[862,2150,2151,2154,2159],{},[883,2152,2153],{},"Documentation",[883,2155,2156,2157,2148],{},"Page MCP Setup (",[14,2158,670],{},[883,2160,2161,2162,2148],{},"Explorateur Swagger (",[14,2163,2164],{},"/developer/rest-api",[10,2166,2167,2168,21],{},"Les deux utilisent la même clé et les mêmes autorisations. Le guide REST se trouve dans ",[34,2169,2170],{"href":43},"API Little Hotelier",[26,2172,2174],{"id":2173},"outils-de-lecture-et-décriture-gardez-lagent-en-laisse","Outils de lecture et d'écriture : gardez l'agent en laisse",[10,2176,2177],{},"Les agents de code exécutent les outils très vite, ce qui est précisément la raison de les ralentir ici.",[236,2179,2180,2186,2192,2210],{},[49,2181,2182,2185],{},[53,2183,2184],{},"Les écritures s'exécutent dès que l'agent les appelle."," En dehors du tableau de bord Hotelier Tools, il n'y a pas de carte d'approbation. Modifier une réservation, enregistrer un paiement, appliquer des prix ou activer un stop sell se produit dès que l'outil s'exécute. Gardez activé le réglage « demander avant d'exécuter des outils » de votre éditeur, et n'utilisez pas les modes d'exécution automatique avec ce serveur.",[49,2187,2188,2191],{},[53,2189,2190],{},"Les actions irréversibles sont bloquées de toute façon."," Huit outils (envoi de factures par e-mail aux clients, remboursements, dépôt de l'enquête INE, invitations d'équipe, envoi de liens aux clients par e-mail, réponses aux questions Booking.com et la vérification de liste d'attente qui envoie des messages aux clients) sont réservés au tableau de bord.",[49,2193,2194,2197,2198,2201,2202,2205,2206,2209],{},[53,2195,2196],{},"Les modifications de réservation se font en deux étapes."," ",[14,2199,2200],{},"propose_reservation_changes"," montre l'avant/après ; ",[14,2203,2204],{},"apply_reservation_changes"," exige ",[14,2207,2208],{},"confirmed: true",". Lisez la proposition.",[49,2211,2212,2215,2216,2219,2220,2223,2224,2226],{},[53,2213,2214],{},"Ne commitez jamais de clé."," Utilisez des références de type ",[14,2217,2218],{},"${HT_API_KEY}",", ajoutez les fichiers de configuration locaux à ",[14,2221,2222],{},".gitignore",", et révoquez sur ",[14,2225,69],{}," toute clé qui aurait fuité.",[26,2228,2230],{"id":2229},"dépannage-le-serveur-napparaît-pas","Dépannage : « le serveur n'apparaît pas »",[236,2232,2233,2239,2247,2258,2264,2272,2288,2297],{},[49,2234,2235,2238],{},[53,2236,2237],{},"Rien n'apparaît après la modification d'une configuration :"," redémarrez l'éditeur ou la CLI. La plupart des outils lisent les configurations MCP au démarrage.",[49,2240,2241,2244,2245,21],{},[53,2242,2243],{},"Claude Code ou VS Code ignore le serveur :"," vérifiez la présence de ",[14,2246,375],{},[49,2248,2249,2252,2253,2255,2256,21],{},[53,2250,2251],{},"Gemini CLI se connecte mais échoue :"," utilisez ",[14,2254,774],{},", pas ",[14,2257,379],{},[49,2259,2260,2263],{},[53,2261,2262],{},"401 :"," clé incorrecte ou révoquée, ou variable d'environnement non définie dans ce terminal.",[49,2265,2266,2269,2270,21],{},[53,2267,2268],{},"400 « No Little Hotelier credentials configured » :"," connectez Little Hotelier dans ",[14,2271,59],{},[49,2273,2274,2281,2282,2284,2285,21],{},[53,2275,2276,2277,2280],{},"423 ",[14,2278,2279],{},"lh_frozen"," :"," la connexion à Little Hotelier est suspendue après un échec de connexion (souvent un mot de passe expiré). Enregistrez le nouveau mot de passe dans ",[53,2283,55],{}," ou cliquez sur ",[53,2286,2287],{},"Check now & resume",[49,2289,2290,2293,2294,21],{},[53,2291,2292],{},"429 :"," trop de requêtes ; attendez le délai indiqué dans ",[14,2295,2296],{},"Retry-After",[49,2298,2299,2302,2303,2306],{},[53,2300,2301],{},"Le retour à la ligne avec barre oblique inverse échoue sous Windows :"," PowerShell n'utilise pas ",[14,2304,2305],{},"\\"," pour continuer une ligne. Collez les commandes sur une seule ligne, comme ci-dessus.",[2308,2309],"demo-cta",{"path":670},[26,2311,2313],{"id":2312},"prochaines-étapes","Prochaines étapes",[236,2315,2316,2329,2336],{},[49,2317,2318,2319,2323,2324,2328],{},"Vous n'êtes pas développeur ? ",[34,2320,2322],{"href":2321},"/blog/connect-claude-to-little-hotelier","Connectez plutôt Claude"," ou ",[34,2325,2327],{"href":2326},"/blog/connect-chatgpt-to-little-hotelier","ChatGPT"," dans le navigateur.",[49,2330,2331,2332,21],{},"Vous découvrez le sujet ? Lisez ",[34,2333,2335],{"href":2334},"/blog/what-is-mcp-server-hotels","ce qu'est un serveur MCP",[49,2337,2338,2339,21],{},"Vous voulez des tableurs sans code ? Voir ",[34,2340,2342],{"href":2341},"/blog/export-little-hotelier-reservations-excel","exporter les réservations vers Excel",[2344,2345,2346],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":113,"searchDepth":289,"depth":289,"links":2348},[2349,2350,2356,2361,2362,2363,2364],{"id":28,"depth":289,"text":29},{"id":162,"depth":289,"text":163,"children":2351},[2352,2353,2354,2355],{"id":170,"depth":298,"text":171},{"id":387,"depth":298,"text":388},{"id":480,"depth":298,"text":481},{"id":676,"depth":298,"text":677},{"id":972,"depth":289,"text":973,"children":2357},[2358,2359,2360],{"id":989,"depth":298,"text":990},{"id":1564,"depth":298,"text":1565},{"id":2080,"depth":298,"text":2081},{"id":2092,"depth":289,"text":2093},{"id":2173,"depth":289,"text":2174},{"id":2229,"depth":289,"text":2230},{"id":2312,"depth":289,"text":2313},"Ajoutez le serveur MCP de Hotelier Tools à Claude Code, Cursor, VS Code, Windsurf ou Gemini CLI : rapport d'occupation, synchro Sheets, tableau de bord.","md",{"seoTitle":2368,"date":2369,"category":2370,"tags":2371,"keywords":2376,"feature":2385,"demoPath":670,"cover":2386,"coverAlt":2387,"faq":2388},"Claude Code MCP : Little Hotelier dans Cursor et VS Code","2026-10-03","ai",[2372,2373,387,2374,2375],"mcp","claude code","vs code","api",[2377,2378,2379,2380,2381,2382,2383,2384],"claude code mcp","configurer mcp claude code","cursor mcp.json","vscode mcp.json","claude code gratuit","little hotelier mcp","gemini cli mcp","windsurf mcp config","api-mcp","/images/blog/demo/en/mcp-setup.webp","Guide MCP setup dans Hotelier Tools : une explication What is MCP? et des onglets Client configuration pour Claude Desktop, VS Code, Cursor et Custom / SDK, avec Claude Desktop sélectionné et son extrait claude_desktop_config.json",[2389,2392,2395,2398,2401],{"q":2390,"a":2391},"Quelle est la commande claude mcp add pour Little Hotelier ?","Lancez : claude mcp add --transport http hotelier-tools https://dashboard.hotelier.tools/api/mcp --header \"Authorization: Bearer htk_YOUR_API_KEY\". Remplacez la clé par une clé créée dans Developer, API Keys de Hotelier Tools, puis vérifiez avec /mcp dans Claude Code.",{"q":2393,"a":2394},"Où se trouve mcp.json dans Cursor et VS Code ?","Cursor lit ~/.cursor/mcp.json pour tous les projets et .cursor/mcp.json à l'intérieur d'un projet. VS Code lit .vscode/mcp.json dans l'espace de travail, ainsi qu'un fichier au niveau utilisateur que vous ouvrez avec la commande MCP: Open User Configuration. VS Code utilise la clé servers, pas mcpServers.",{"q":2396,"a":2397},"Faut-il être développeur pour utiliser Claude Code avec les données de mon hôtel ?","Non. Vous installez Claude Code, collez une commande, puis vous posez vos questions en langage courant. Il est utile de savoir où vont vos fichiers et comment lancer un script, mais Claude Code peut expliquer chaque étape au fur et à mesure.",{"q":2399,"a":2400},"Puis-je me connecter au lieu d'utiliser une clé API ?","Oui, dans les clients qui prennent en charge OAuth. Ajoutez l'URL du serveur sans en-tête, puis connectez-vous quand le client le demande : dans Claude Code, lancez /mcp et choisissez de vous authentifier. La connexion reste valable 30 jours. Les clés conviennent mieux aux scripts qui tournent sans supervision.",{"q":2402,"a":2403},"Est-ce une API officielle de Little Hotelier ou de SiteMinder ?","Non. Hotelier Tools est indépendant et n'est ni affilié à SiteMinder ou à Little Hotelier, ni approuvé par eux. Il se connecte avec les identifiants Little Hotelier de votre établissement et propose sa propre API REST et son propre serveur MCP.","/blog/fr/little-hotelier-mcp-claude-code-cursor-vscode",{"title":5,"description":2365},"blog/fr/little-hotelier-mcp-claude-code-cursor-vscode","tQfHR99WYy_4Q_zVkI-Yct-bi3utWidgVv9CYPB9RY0",[2409,2410,2411,2412,2413,2414,2415,2416,865],"de","en-gb","en","es","fr","id","it","pt",[2418,2438,2457,2479,2497,2501,2520,2537,2551,2573,2593,2612,2631,2650,2669,2688,2708,2726,2746,2766,2781,2796,2813,2829,2848],{"path":2419,"title":2420,"description":2421,"meta":2422},"/blog/fr/little-hotelier-api","API Little Hotelier : existe-t-elle ? La réponse en 2026, et comment récupérer vos données","Pas de clé API pour vos réservations ni vos clients. Ce que SiteMinder propose et comment lire vos données Little Hotelier en REST en quelques minutes.",{"date":2369,"category":2375,"tags":2423,"keywords":2428,"feature":2385,"cover":2436,"coverAlt":2437,"featured":1042},[2375,2424,2425,2426,2427],"rest","little hotelier","siteminder","developers",[2429,2430,2431,2432,2433,2434,2435],"little hotelier api","api little hotelier documentation","little hotelier api key","siteminder api","siteminder exchange api","little hotelier rest api","intégration little hotelier","/images/blog/demo/en/rest-api-reference.webp","Page de référence de l'API REST dans Hotelier Tools avec l'URL de base, un téléchargement openapi.json, le bloc Quick authorize (champ Bearer token, Authorize Swagger, Use my session) et des modèles de code en cURL, JavaScript, Python et PowerShell",{"path":2439,"title":2440,"description":2441,"meta":2442},"/blog/fr/ai-assistant-hotel-front-desk","Assistant IA à la réception d'un petit hôtel : ce qu'il peut faire sans risque (avec validation)","Un assistant IA consulte les réservations, rédige des réponses et prépare des modifications. Ce qu'il fait sans risque, et pourquoi vous validez tout.",{"date":2369,"category":2370,"tags":2443,"keywords":2447,"feature":2454,"cover":2455,"coverAlt":2456},[2370,2444,2445,2446,2425],"ai assistant","front desk","approvals",[2448,2449,2450,2451,2452,2453],"assistant IA hôtel","réceptionniste IA hôtel","agent IA pour hôtel","assistant vocal IA hôtel","IA hôtellerie","meilleures applications IA pour hôteliers","ai-assistant","/images/blog/demo/en/ai-chat-start.webp","Écran d'accueil de l'assistant IA de Hotelier Tools indiquant que toute action qui modifie des données demande d'abord une confirmation, avec des questions suggérées et l'historique des conversations à gauche",{"path":2458,"title":2459,"description":2460,"meta":2461},"/blog/fr/booking-com-invalid-card-no-show","Carte de crédit invalide ou no-show sur Booking.com : que faire, pas à pas","Carte invalide sur Booking.com : marquez-la, laissez 24 h au client, puis annulez sans commission. Délais du no-show, carte virtuelle refusée, prévention.",{"date":2369,"category":2462,"tags":2463,"keywords":2468,"feature":2476,"cover":2477,"coverAlt":2478},"operations",[2464,2465,2466,2425,2467],"booking.com","no-show","payments","automated checks",[2469,2470,2471,2472,2473,2474,2475],"carte de crédit invalide booking","carte refusée booking","no show booking","frais de no show booking","carte virtuelle booking refusée","commission booking no show","no show hôtellerie définition","automated-checks","/images/blog/demo/en/automated-checks-issues.webp","Page Issues de Hotelier Tools avec 20 problèmes ouverts, 5 corrigés et 25 au total, et des réservations listées avec un avertissement de solde impayé à l'arrivée et un bouton Verify",{"path":2480,"title":2481,"description":2482,"meta":2483},"/blog/fr/hotel-front-desk-checklist-automation","Checklist réception hôtel pour Little Hotelier : 8 problèmes à repérer avant l'arrivée des clients","Checklist réception hôtel pour Little Hotelier : 8 problèmes de réservation à repérer avant l'arrivée, où les voir, et comment en automatiser cinq.",{"date":2369,"category":2462,"tags":2484,"keywords":2488,"feature":2476,"cover":2495,"coverAlt":2496},[2445,2485,2486,2487,2425],"checklist","check-in","automation",[2489,2490,2491,2492,2493,2494],"checklist réception hôtel","checklist réception hôtel quotidienne","modèle de checklist réception","checklist check-in hôtel","réservations non attribuées little hotelier","automatisation hôtel","/images/blog/demo/en/automated-checks-lifecycle.webp","Page Automated Checks de Hotelier Tools : le fonctionnement des contrôles en quatre étapes, un avis Nothing runs any check yet suggérant Before they arrive, et The journey of a reservation à travers ses cinq étapes",{"path":2404,"title":5,"description":2365,"meta":2498},{"date":2369,"category":2370,"tags":2499,"keywords":2500,"feature":2385,"cover":2386,"coverAlt":2387},[2372,2373,387,2374,2375],[2377,2378,2379,2380,2381,2382,2383,2384],{"path":2502,"title":2503,"description":2504,"meta":2505},"/blog/fr/booking-com-commission","Commission Booking.com : quel pourcentage ? (Et comment voir votre net réel dans Little Hotelier)","Commission Booking.com : pas de taux unique, mais le % de votre contrat, plus programmes et frais de paiement. Assiette, TVA et net réel par réservation.",{"date":2369,"category":2506,"tags":2507,"keywords":2511,"cover":2518,"coverAlt":2519},"tips",[2464,2508,2425,2509,2510],"commission","userscript","vat",[2512,2513,2514,2515,2516,2517],"commission booking pourcentage","commission booking 2026","calculatrice commission booking","calcul commission booking hôtel","commission booking tva","commission booking genius","/images/scripts/show-booking-commissions/to.png","Récapitulatif d'une réservation Little Hotelier (interface en espagnol) avec la commission Booking.com, les frais de paiement et le net approximatif ajoutés par un script gratuit",{"path":2521,"title":2522,"description":2523,"meta":2524},"/blog/fr/connect-chatgpt-to-little-hotelier","Connecter ChatGPT à Little Hotelier (avec 18 prompts pour petits hôtels)","Connectez ChatGPT à Little Hotelier avec le mode développeur et une app MCP, vérifiez votre forfait et copiez 18 prompts : arrivées, paiements, tarifs.",{"date":2369,"category":2370,"tags":2525,"keywords":2528,"feature":2385,"cover":2535,"coverAlt":2536},[2526,2372,2370,2527,2425],"chatgpt","prompts",[2529,2530,2531,2532,2533,2534],"connecter chatgpt à little hotelier","chatgpt hôtellerie","connecteur mcp chatgpt","prompts chatgpt pour hôtels","chatgpt gestion hôtelière","mode développeur chatgpt mcp","/images/blog/demo/en/mcp-oauth-consent.webp","Page Authorize MCP access de Hotelier Tools qu'un assistant IA ouvre au moment de la connexion, avec un avis de jeton valable 30 jours et les boutons Deny et Allow access",{"path":2538,"title":2539,"description":2540,"meta":2541},"/blog/fr/connect-claude-to-little-hotelier","Connecter Claude à Little Hotelier (MCP, pas à pas)","Connectez Claude à Little Hotelier avec un connecteur personnalisé : collez une URL, connectez-vous, autorisez. Premiers prompts, sécurité et dépannage.",{"date":2369,"category":2370,"tags":2542,"keywords":2544,"feature":2385,"cover":2386,"coverAlt":2550,"featured":1042},[192,2372,2370,2543,2425],"connectors",[2545,2546,2382,2547,2548,2549],"connecter claude à little hotelier","serveur mcp claude","connecteurs mcp claude","configurer mcp claude desktop","connecteur personnalisé claude","Guide de configuration MCP de Hotelier Tools avec l'explication What is MCP? et l'onglet Claude Desktop sélectionné, montrant les étapes et l'extrait de configuration avec l'URL du serveur MCP",{"path":2552,"title":2553,"description":2554,"meta":2555},"/blog/fr/little-hotelier-cta-ctd-stop-sell","CTA, CTD, séjour minimum et stop sell : que signifient-ils dans Little Hotelier ?","CTA bloque les arrivées, CTD les départs, le séjour minimum fixe la durée minimale, stop sell ferme la vente. Définitions et réglage dans Little Hotelier.",{"date":2369,"category":2556,"tags":2557,"keywords":2562,"feature":2570,"cover":2571,"coverAlt":2572},"pricing",[2558,2559,2560,2561,2425],"restrictions","cta","ctd","stop sell",[2563,2564,2565,2566,2567,2568,2569],"CTA CTD hôtellerie","little hotelier cta ctd","fermé à l'arrivée définition","stop sell hôtel définition","siteminder stop sell","durée minimum de séjour hôtel","séjour minimum hôtel","dynamic-pricing","/images/blog/demo/en/price-recommendations.webp","Recommandations de prix dans Hotelier Tools pour la chambre Doble Estándar, du 3 au 16 octobre 2026 : prix actuel et recommandé par nuit, une colonne CTA / CTD avec des boutons A et D, le séjour minimum, une colonne Channel et un bouton Apply to Little Hotelier",{"path":2574,"title":2575,"description":2576,"meta":2577},"/blog/fr/ine-hotel-occupancy-survey","Enquête INE d'occupation hôtelière (Espagne) : comment la remplir depuis Little Hotelier","Enquête INE d'occupation hôtelière : obligatoire si l'INE vous sélectionne, amendes jusqu'à 30 050 €. Contenu, IRIA et remplissage depuis Little Hotelier.",{"date":2369,"category":2578,"tags":2579,"keywords":2583,"feature":2590,"cover":2591,"coverAlt":2592},"compliance",[2580,2581,2578,2582,2425],"ine","spain","reports",[2584,2585,2586,2587,2588,2589],"enquête INE hôtel Espagne","enquête occupation hôtelière INE","encuesta ocupación hotelera ine","enquête fréquentation hôtelière Espagne","iria ine encuesta","encuesta ine obligatoria multa","ine-reports","/images/blog/demo/en/ine-guest-origins-report.webp","Guest Origin Statistics (enquête INE HOT) dans Hotelier Tools pour la période du 27 septembre au 3 octobre 2026 : 8 arrivées, 24 nuitées, 3,4 clients par jour et 3 fiches avec données manquantes, au-dessus des onglets Daily summary, By guest origin, Rooms, ADR by client et Data quality",{"path":2594,"title":2595,"description":2596,"meta":2597},"/blog/fr/export-little-hotelier-reservations-excel","Exporter les réservations Little Hotelier vers Excel (avant que les données clients ne soient masquées)","Exportez réservations et clients Little Hotelier vers Excel ou Sheets, à la main ou automatiquement, avant leur masquage 180 jours après le départ.",{"date":2369,"category":2375,"tags":2598,"keywords":2602,"feature":2385,"cover":2610,"coverAlt":2611},[2599,2600,2601,2582,2425],"export","excel","google sheets",[2603,2604,2605,2606,2607,2608,2609],"exporter les réservations little hotelier vers excel","little hotelier rapports","little hotelier export excel","little hotelier csv","liste de clients hôtel excel","tableau de réservations hôtel excel","données clients little hotelier masquées","/images/blog/demo/en/developer-portal.webp","Portail développeur de Hotelier Tools avec des cartes REST API et Swagger, MCP setup, API keys et LH methods, au-dessus d'un exemple d'authentification avec une clé API",{"path":2613,"title":2614,"description":2615,"meta":2616},"/blog/fr/little-hotelier-chrome-extensions","Extension Chrome pour Little Hotelier : userscripts gratuits pour aller plus vite","Userscripts gratuits pour Little Hotelier : prix dans le calendrier, tableaux larges, commission Booking.com, facture en un clic. Installation sûre.",{"date":2369,"category":2506,"tags":2617,"keywords":2622,"cover":2629,"coverAlt":2630},[2618,2619,2620,2425,2621],"chrome extension","tampermonkey","userscripts","productivity",[2623,2624,2625,2626,2627,2628],"extension chrome little hotelier","tampermonkey scripts","userscript chrome","little hotelier calendrier prix","little hotelier pleine largeur","little hotelier commission booking.com","/images/scripts/prices-display/to.png","Calendrier Little Hotelier (interface en espagnol) avec le prix de chaque nuit affiché sous chaque type de chambre, ajouté par le script Prices Display",{"path":2632,"title":2633,"description":2634,"meta":2635},"/blog/fr/send-invoice-to-guest-at-checkout","Facture Booking pour un client : l'envoyer automatiquement au départ depuis Little Hotelier","Booking.com ne facture pas vos clients : c'est votre rôle. Envoyez la facture depuis Little Hotelier à la main, ou automatiquement au départ du client.",{"date":2369,"category":2636,"tags":2637,"keywords":2640,"feature":2636,"cover":2648,"coverAlt":2649},"invoicing",[2638,2639,2464,2425,2487],"invoices","checkout",[2641,2642,2643,2644,2645,2646,2647],"facture booking pour client","facture booking comment faire","envoyer facture client little hotelier","little hotelier facture","facture hôtel au départ","facture booking tva","logiciel facturation chambre d'hôtes","/images/blog/demo/en/invoice-at-checkout.webp","Page Invoice on leave dans Hotelier Tools : la tâche Automatic invoicing at check-out exécutée chaque jour à 12 h, une période avec Search reservations, et le tableau des réservations avec un bouton Auto-invoice pour chaque séjour",{"path":2651,"title":2652,"description":2653,"meta":2654},"/blog/fr/guest-registration-rules-by-country","Fiche de police à l'hôtel : règles d'enregistrement des clients par pays (2026)","Fiche de police et enregistrement des clients : qui, quelles données, quel délai. France, Espagne, Italie, Portugal, Allemagne, Brésil, Thaïlande.",{"date":2369,"category":2578,"tags":2655,"keywords":2658,"cover":2667,"coverAlt":2668},[2656,2578,2414,2657,2425],"guest registration","police",[2659,2660,2661,2662,2663,2664,2665,2666],"fiche de police hôtel obligatoire","fiche individuelle de police","fiche de police hôtel france","enregistrement en ligne hôtel","pourquoi les hôtels demandent le passeport","alloggiati web","meldeschein hôtel","tm30 hôtel","/images/blog/demo/en/automated-checks-moment-on-arrival.webp","Contrôles When they arrive dans Hotelier Tools : pièce d'identité / passeport (registre de police), attribution physique de la chambre et validation de l'adresse et de l'origine activés, avec ce que chaque contrôle peut et ne peut pas faire",{"path":2670,"title":2671,"description":2672,"meta":2673},"/blog/fr/little-hotelier-integrations","Intégrations Little Hotelier en 2026 : les meilleures pour la comptabilité, l'enregistrement en ligne, les tarifs, la messagerie et l'IA","Ce qui se connecte à Little Hotelier en 2026 : exports Xero et QuickBooks, enregistrement Chekin et Duve, tarification, messagerie, IA et ajouts gratuits.",{"date":2369,"category":2375,"tags":2674,"keywords":2679,"feature":2385,"cover":2610,"coverAlt":2687},[2675,2676,2677,2678,2425],"integrations","app store","xero","chekin",[2680,2681,2682,2683,2684,2685,2686],"intégrations little hotelier","little hotelier xero","little hotelier app store","little hotelier widget de réservation","little hotelier plugin wordpress","little hotelier chekin","little hotelier zapier","Portail développeur dans Hotelier Tools avec des cartes pour REST API & Swagger, MCP setup, API keys et LH methods, et un encadré Authentication avec un exemple cURL utilisant une clé API fictive",{"path":2689,"title":2690,"description":2691,"meta":2692},"/blog/fr/hotel-waitlist-sold-out-dates","Liste d'attente hôtel : comment la gérer pour les dates complètes (et relouer vite les chambres annulées)","Tenez une liste des clients qui veulent vos dates complètes et proposez-leur d'abord les chambres libérées. Tableur, veille automatique, formulaire public.",{"date":2369,"category":2693,"tags":2694,"keywords":2699,"feature":2695,"cover":2706,"coverAlt":2707},"guests",[2695,2696,2697,2425,2698],"waitlist","cancellations","direct booking","availability",[2700,2701,2702,2703,2704,2705],"liste d'attente hôtel","liste d'attente hôtel complet","remplir les annulations hôtel","formulaire liste d'attente hôtel","hôtel complet que faire","réservation directe annulation hôtel","/images/blog/demo/en/availability-waiting-list.webp","Page Availability queue de Hotelier Tools avec History et Check the queue now, la carte Checks on the queue proposant Check every night at 01:00, et le formulaire Add a stay to watch avec les nuits, les chambres nécessaires, les types de chambres et les coordonnées du client",{"path":2709,"title":2710,"description":2711,"meta":2712},"/blog/fr/hotel-do-not-rent-list","Liste noire de clients d'hôtel : comment la tenir légalement avec Little Hotelier","Liste noire de clients d'hôtel : légale au regard du RGPD si elle s'en tient aux faits. Quoi consigner, quoi ne jamais écrire, et comment être alerté.",{"date":2369,"category":2462,"tags":2713,"keywords":2717,"feature":2476,"cover":2724,"coverAlt":2725},[2714,2715,2693,2716,2425],"do not rent list","gdpr","watchlist",[2718,2719,2720,2721,2722,2723],"liste noire clients hôtel","liste noire hôtel rgpd","fichier clients indésirables hôtel","bloquer un client booking","liste de clients refusés hôtel","notes clients little hotelier","/images/blog/demo/en/automated-checks-do-not-rebook-list.webp","Liste do-not-rebook dans Hotelier Tools : la carte du contrôle nocturne, un contrôle de réservation montrant une forte correspondance avec le motif factuel, et une entrée avec Edit, Deactivate et Delete",{"path":2727,"title":2728,"description":2729,"meta":2730},"/blog/fr/little-hotelier-alternatives","Little Hotelier : avis et alternatives en 2026, comparatif honnête avec Cloudbeds, Mews, Beds24, Lodgify, Smoobu et Hostaway","Alternatives à Little Hotelier : Cloudbeds, Mews, Beds24, Lodgify, Smoobu ou Hostaway ? Pour qui, quel tarif, quelle API, et quand mieux vaut rester.",{"date":2369,"category":2506,"tags":2731,"keywords":2736,"cover":2744,"coverAlt":2745},[2732,2733,2734,2425,2735],"pms","comparison","alternatives","cloudbeds",[2737,2738,2739,2740,2741,2742,2743],"little hotelier avis","alternative little hotelier","little hotelier vs cloudbeds","little hotelier tarif","little hotelier siteminder","meilleur pms petit hôtel","logiciel gestion petit hotel","/images/blog/demo/en/dashboard-overview.webp","Tableau de bord d'accueil de Hotelier Tools pour l'établissement de démonstration Hotel Demo Sol : une carte Open AI chat (ouvrir le chat IA), un avertissement indiquant que deux canaux de messagerie client demandent votre attention et des tuiles d'état pour Little Hotelier, Booking.com, la base de connaissances IA et la ville de tarification",{"path":2747,"title":2748,"description":2749,"meta":2750},"/blog/fr/booking-com-guest-messages","Messagerie Booking.com : gérer les messages clients sans passer la journée dans l'extranet","Messagerie Booking.com : Pulse, modèles, messages programmés, réponses automatiques, faux messages à repérer, et une boîte unique avec WhatsApp et e-mail.",{"date":2369,"category":2693,"tags":2751,"keywords":2755,"feature":2763,"cover":2764,"coverAlt":2765},[2464,2752,2753,2754,2425],"guest messages","inbox","templates",[2756,2757,2758,2759,2760,2761,2762],"messagerie booking","messagerie booking ne fonctionne pas","message booking whatsapp","messages programmés booking","modèle de message booking","réponses automatiques booking","faux messages booking","guest-inbox","/images/blog/demo/en/guest-inbox-ai-draft-availability.webp","Boîte de réception des clients de Hotelier Tools avec les filtres WhatsApp, Email et Booking.com, un e-mail d'un client qui s'informe sur une chambre double en septembre, le plan de l'IA en brouillon avec une réponse modifiable en anglais, et le panneau de l'assistant privé",{"path":2767,"title":2768,"description":2769,"meta":2770},"/blog/fr/what-is-mcp-server-hotels","Serveur MCP : c'est quoi ? Guide pour hôteliers (et quels PMS en ont un)","Serveur MCP : il permet à Claude ou ChatGPT de lire et d'agir dans votre logiciel hôtelier. Guide simple, sécurité et PMS équipés en octobre 2026.",{"date":2369,"category":2370,"tags":2771,"keywords":2772,"feature":2385,"cover":2386,"coverAlt":2780,"featured":1042},[2372,2370,192,2526,2732],[2773,2774,2775,2546,2776,2382,2777,2778,2779],"serveur mcp c'est quoi","mcp c'est quoi ia","serveur mcp hôtel","mcp claude c'est quoi","apaleo mcp server","mews mcp server","cloudbeds mcp server","Guide MCP setup dans Hotelier Tools avec une explication What is MCP? et des onglets Client configuration pour Claude Desktop, VS Code, Cursor et Custom / SDK, montrant la configuration de Claude Desktop avec l'adresse du serveur",{"path":2782,"title":2783,"description":2784,"meta":2785},"/blog/fr/ses-hospedajes-little-hotelier","SES.Hospedajes avec Little Hotelier : enregistrer les voyageurs sans double saisie","SES.Hospedajes, le registre des voyageurs en Espagne : qui, quelles données, délais de 24 h, comment l'envoyer et comment Little Hotelier peut le faire.",{"date":2369,"category":2578,"tags":2786,"keywords":2788,"cover":2667,"coverAlt":2795},[2787,2581,2578,2656,2425],"ses hospedajes",[2787,2789,2790,2791,2792,2793,2794],"ses hospedajes en français","ses hospedajes little hotelier","fiche de police Espagne hôtel","parte de viajeros","ses hospedajes datos obligatorios","enregistrement des voyageurs Espagne","Réglages When they arrive dans Hotelier Tools avec les contrôles ID / passport (police register), Physical room assignment et Address and origin validation activés, chacun avec ce qu'il peut et ne peut pas faire",{"path":2797,"title":2798,"description":2799,"meta":2800},"/blog/fr/dynamic-pricing-little-hotelier","Tarification dynamique hôtel avec Little Hotelier : prix des concurrents, événements locaux et règles","Tarification dynamique avec Little Hotelier : routine hebdomadaire, options natives et recommandations motivées, appliquées seulement si vous confirmez.",{"date":2369,"category":2556,"tags":2801,"keywords":2805,"feature":2570,"cover":2571,"coverAlt":2812},[2802,2803,2804,2425,2556],"dynamic pricing","revenue management","competitor prices",[2806,2807,2808,2809,2810,2811],"tarification dynamique hôtel","tarif dynamique hôtellerie","little hotelier tarification dynamique","yield management hôtellerie","outil de veille tarifaire hôtel","comment fixer le prix d'une chambre d'hôtel","Page Price recommendations de Hotelier Tools sur 14 nuits : le tableau Doble Estándar avec le tarif actuel, le tarif recommandé, la variation, la médiane du marché et ce que paie le client par nuit, et une barre Apply to Little Hotelier sans aucun prix sélectionné",{"path":2814,"title":2815,"description":2816,"meta":2817},"/blog/fr/download-all-little-hotelier-invoices","Télécharger toutes vos factures Little Hotelier d'un coup (pour votre déclaration de TVA trimestrielle)","Télécharger toutes les factures Little Hotelier : le ZIP natif, puis comment créer les factures manquantes et envoyer un ZIP et un CSV par trimestre.",{"date":2369,"category":2636,"tags":2818,"keywords":2822,"feature":2636,"cover":2827,"coverAlt":2828,"featured":1042},[2638,2819,2425,2820,2821],"accounting","quarterly tax","zip",[2823,2824,2681,2647,2825,2826],"télécharger toutes les factures little hotelier","exporter factures little hotelier","facture hôtel tva","déclaration tva trimestrielle hôtel","/images/blog/demo/en/invoices-by-quarter.webp","Page Invoices de Hotelier Tools avec 66 factures au total, les trimestres T4 et T3 2026, chacun avec ses boutons Preview CSV et ZIP, et septembre 2026 ouvert sous forme de tableau de numéros de facture, clients, numéros fiscaux, dates de départ et totaux",{"path":2830,"title":2831,"description":2832,"meta":2833},"/blog/fr/little-hotelier-tips","Tutoriel Little Hotelier : 20 astuces et fonctions cachées que peu de propriétaires connaissent (2026)","20 astuces Little Hotelier : calendrier plus rapide, passkeys, tarif minimum, nuits isolées, liens de réservation, journal d'audit et scripts gratuits.",{"date":2369,"category":2506,"tags":2834,"keywords":2837,"feature":2845,"cover":2846,"coverAlt":2847},[2506,2835,2836,2620,2425],"how to","calendar",[2838,2839,2840,2841,2842,2843,2844],"little hotelier tutorial","little hotelier mode d'emploi","little hotelier guide","little hotelier astuces","little hotelier fonctions cachées","little hotelier calendrier","comment utiliser little hotelier","dashboard","/images/scripts/full-width-reservation-table/to.png","Page Reservations de Little Hotelier (interface en espagnol) étirée sur toute la largeur de l'écran par le script Full Width Reservation Table : filtres de recherche, bouton Buscar, 36 réservations trouvées et lien Exportar",{"path":2849,"title":2850,"description":2851,"meta":2852},"/blog/fr/whatsapp-little-hotelier","WhatsApp Business pour hôtel avec Little Hotelier : Messaging hub et autres options","WhatsApp avec Little Hotelier : le Messaging hub (API officielle), l'appli WhatsApp Business gratuite ou une boîte partagée. Comparatif et modèles.",{"date":2369,"category":2693,"tags":2853,"keywords":2857,"feature":2763,"cover":2865,"coverAlt":2866},[2854,2855,2425,2856,2753],"whatsapp","messaging","guest engagement",[2858,2859,2860,2861,2862,2863,2864],"whatsapp business hôtel","little hotelier whatsapp","whatsapp pour hôtels","whatsapp business api hôtel","appli whatsapp business chambre d'hôtes","modèles whatsapp check-in hôtel","little hotelier messaging hub","/images/blog/demo/en/guest-inbox-ai-plan-late-arrival.webp","Messagerie client de Hotelier Tools avec une conversation WhatsApp d'Ingrid Kowalski à propos d'une arrivée tardive (identité vérifiée, réservation liée), un plan IA en brouillon avec une réponse modifiable, et le panneau privé Assistant",1791141224171]