[{"data":1,"prerenderedAt":2863},["ShallowReactive",2],{"blog-little-hotelier-mcp-claude-code-cursor-vscode-it":3,"blog-langs-little-hotelier-mcp-claude-code-cursor-vscode":2405,"blog-list-it":2414},{"id":4,"title":5,"body":6,"description":2362,"extension":2363,"meta":2364,"navigation":1040,"path":2401,"seo":2402,"stem":2403,"__hash__":2404},"content/blog/it/little-hotelier-mcp-claude-code-cursor-vscode.md","Claude Code MCP: come usare i dati di Little Hotelier in Claude Code, Cursor e VS Code",{"type":7,"value":8,"toc":2344},"minimark",[9,22,25,30,45,87,93,96,106,140,157,160,164,167,172,181,217,235,269,275,370,384,388,404,462,477,481,505,649,665,673,677,695,753,756,781,840,850,853,968,972,985,989,992,1003,1006,1549,1560,1564,1571,2058,2076,2080,2085,2088,2092,2163,2169,2173,2176,2224,2228,2304,2307,2311,2340],[10,11,12,13,17,18,21],"p",{},"Aggiungi un unico server MCP remoto, ",[14,15,16],"code",{},"https://dashboard.hotelier.tools/api/mcp",", con una chiave API di Hotelier Tools, e Claude Code, Cursor, VS Code (modalità agente di Copilot), Windsurf o Gemini CLI potranno leggere prenotazioni, tariffe e fatture di Little Hotelier mentre scrivono codice per te. In Claude Code basta un solo comando: ",[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],{},"Qui sotto trovi le configurazioni esatte per ogni strumento (verificate sulla documentazione di ciascun fornitore a ottobre 2026), tre cose utili da costruire e quando chiamare direttamente l'API REST.",[26,27,29],"h2",{"id":28},"prima-di-iniziare-crea-una-chiave-api","Prima di iniziare: crea una chiave API",[10,31,32,33,40,41],{},"Little Hotelier non pubblica un server MCP, e la documentazione delle API partner di SiteMinder dice che i dati di disponibilità e tariffe ",[34,35,39],"a",{"href":36,"rel":37},"https://developer.siteminder.com/smx-api/reference/availability-and-rates/publishers",[38],"nofollow","non si possono ottenere da Little Hotelier",". Hotelier Tools offre sia un server MCP sia un'API REST, usando il login di Little Hotelier della tua struttura. Non è affiliato né approvato da SiteMinder o Little Hotelier. Per approfondire: ",[34,42,44],{"href":43},"/blog/little-hotelier-api","Little Hotelier ha un'API?",[46,47,48,61,71,81],"ol",{},[49,50,51,52,56,57,60],"li",{},"In Hotelier Tools collega Little Hotelier in ",[53,54,55],"strong",{},"Credentials"," (",[14,58,59],{},"/credentials","), se non l'hai ancora fatto.",[49,62,63,64,56,67,70],{},"Apri ",[53,65,66],{},"Developer → API & MCP → API Keys",[14,68,69],{},"/developer/api-keys",").",[49,72,73,74,77,78,21],{},"Scrivi un nome che indichi dove userai la chiave, per esempio ",[14,75,76],{},"cursor-laptop",", e premi ",[53,79,80],{},"Generate key",[49,82,83,84,21],{},"Copiala subito: \"Copy this key now — it will not be shown again.\" Inizia con ",[14,85,86],{},"htk_",[88,89],"screenshot",{"alt":90,"caption":91,"path":69,"src":92},"Pagina API keys in Hotelier Tools: il modulo Generate a new key con un campo nome e il pulsante Generate key, una chiave attiva (MCP internal (chat), mascherata) con un pulsante Revoke e le note Good security practice","Una chiave per ogni strumento rende facile revocare solo quella che non usi più.","/images/blog/demo/en/api-keys.webp",[10,94,95],{},"Una chiave ha gli stessi permessi del tuo account Hotelier Tools, sulla sola struttura in cui l'hai creata. Puoi avere fino a 10 chiavi.",[10,97,98,101,102,105],{},[53,99,100],{},"Tieni la chiave fuori dai tuoi file."," Salvala in una variabile d'ambiente chiamata ",[14,103,104],{},"HT_API_KEY"," e richiamala dalle configurazioni:",[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   # oppure ~/.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","   # oppure ~/.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],{},"Apri un nuovo terminale (e riavvia l'editor) in modo che legga la variabile.",[26,161,163],{"id":162},"come-aggiungere-il-server-mcp-a-claude-code-cursor-vs-code-windsurf-e-gemini-cli","Come aggiungere il server MCP a Claude Code, Cursor, VS Code, Windsurf e Gemini CLI",[10,165,166],{},"Ogni strumento conserva gli stessi tre dati (indirizzo, trasporto, chiave) in un file leggermente diverso. Scegli il tuo.",[168,169,171],"h3",{"id":170},"claude-code","Claude Code",[10,173,174,175,180],{},"Claude Code ha un comando integrato per i server remoti (",[34,176,179],{"href":177,"rel":178},"https://code.claude.com/docs/en/mcp",[38],"documentazione di 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],{},"Poi avvia ",[14,221,192],{}," e digita ",[14,224,225],{},"/mcp",". Hotelier Tools dovrebbe risultare ",[53,228,229],{},"connected","; uno stato ",[14,232,233],{},"failed"," con un 401 significa che la chiave è sbagliata.",[236,237,238,256],"ul",{},[49,239,240,243,244,247,248,251,252,255],{},[53,241,242],{},"Ambito."," Per impostazione predefinita il server viene salvato solo per la cartella corrente. Aggiungi ",[14,245,246],{},"--scope user"," dopo il nome per usarlo in ogni progetto, oppure ",[14,249,250],{},"--scope project"," per scrivere un ",[14,253,254],{},".mcp.json"," condiviso.",[49,257,258,261,262,265,266,268],{},[53,259,260],{},"Accesso con login invece della chiave."," Esegui il comando senza ",[14,263,264],{},"--header",", poi dentro Claude Code digita ",[14,267,225],{}," e autenticati nel browser. Se hai già collegato Hotelier Tools come connettore su claude.ai, Claude Code può recuperarlo quando accedi con lo stesso account Claude.",[10,270,271,272,274],{},"Per un progetto che condividi con un collega o tieni in Git, metti il server in ",[14,273,254],{}," e lascia che ognuno inserisca la propria chiave:",[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,21],{},"La riga ",[14,374,375],{},"\"type\": \"http\""," è obbligatoria: Claude Code considera un errore di configurazione una voce con ",[14,378,379],{},"url"," ma senza ",[14,382,383],{},"type",[168,385,387],{"id":386},"cursor","Cursor",[10,389,390,391,394,395,398,399,180],{},"Cursor legge ",[14,392,393],{},"~/.cursor/mcp.json"," per tutti i progetti, oppure ",[14,396,397],{},".cursor/mcp.json"," dentro un singolo progetto (",[34,400,403],{"href":401,"rel":402},"https://cursor.com/docs/context/mcp",[38],"documentazione di Cursor",[107,405,407],{"className":277,"code":406,"filename":393,"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,408,409,413,419,425,435,450,454,458],{"__ignoreMap":113},[117,410,411],{"class":119,"line":120},[117,412,286],{"class":152},[117,414,415,417],{"class":119,"line":289},[117,416,292],{"class":123},[117,418,295],{"class":152},[117,420,421,423],{"class":119,"line":298},[117,422,301],{"class":123},[117,424,295],{"class":152},[117,426,427,429,431,433],{"class":119,"line":306},[117,428,324],{"class":123},[117,430,312],{"class":152},[117,432,329],{"class":127},[117,434,318],{"class":152},[117,436,437,439,441,443,445,448],{"class":119,"line":321},[117,438,337],{"class":123},[117,440,340],{"class":152},[117,442,343],{"class":123},[117,444,312],{"class":152},[117,446,447],{"class":127},"\"Bearer ${env:HT_API_KEY}\"",[117,449,351],{"class":152},[117,451,452],{"class":119,"line":334},[117,453,357],{"class":152},[117,455,456],{"class":119,"line":354},[117,457,363],{"class":152},[117,459,460],{"class":119,"line":360},[117,461,369],{"class":152},[10,463,464,465,468,469,472,473,476],{},"Salva, poi verifica che il server sia attivo nelle impostazioni MCP di Cursor (le versioni recenti elencano i server sotto ",[53,466,467],{},"Customize"," nella barra laterale). Fai le tue richieste nella chat ",[53,470,471],{},"Agent",". Per impostazione predefinita Cursor chiede l'approvazione prima di eseguire uno strumento; lasciala così per questo server. Se ometti ",[14,474,475],{},"headers",", Cursor propone invece l'accesso dal browser.",[168,478,480],{"id":479},"vs-code-con-github-copilot","VS Code con GitHub Copilot",[10,482,483,484,487,488,491,492,494,495,500,501,504],{},"VS Code usa ",[14,485,486],{},".vscode/mcp.json",", con ",[14,489,490],{},"servers"," come chiave principale e un ",[14,493,375],{}," obbligatorio (",[34,496,499],{"href":497,"rel":498},"https://code.visualstudio.com/docs/agents/reference/mcp-configuration",[38],"documentazione di VS Code","). La sua funzione ",[14,502,503],{},"inputs"," chiede la chiave una sola volta e la conserva nell'archivio sicuro di VS Code, così non resta mai nel file:",[107,506,508],{"className":277,"code":507,"filename":486,"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,509,510,514,522,527,538,550,562,572,576,581,589,596,607,618,634,639,644],{"__ignoreMap":113},[117,511,512],{"class":119,"line":120},[117,513,286],{"class":152},[117,515,516,519],{"class":119,"line":289},[117,517,518],{"class":123},"  \"inputs\"",[117,520,521],{"class":152},": [\n",[117,523,524],{"class":119,"line":298},[117,525,526],{"class":152},"    {\n",[117,528,529,531,533,536],{"class":119,"line":306},[117,530,309],{"class":123},[117,532,312],{"class":152},[117,534,535],{"class":127},"\"promptString\"",[117,537,318],{"class":152},[117,539,540,543,545,548],{"class":119,"line":321},[117,541,542],{"class":123},"      \"id\"",[117,544,312],{"class":152},[117,546,547],{"class":127},"\"ht-api-key\"",[117,549,318],{"class":152},[117,551,552,555,557,560],{"class":119,"line":334},[117,553,554],{"class":123},"      \"description\"",[117,556,312],{"class":152},[117,558,559],{"class":127},"\"Hotelier Tools API key (htk_…)\"",[117,561,318],{"class":152},[117,563,564,567,569],{"class":119,"line":354},[117,565,566],{"class":123},"      \"password\"",[117,568,312],{"class":152},[117,570,571],{"class":123},"true\n",[117,573,574],{"class":119,"line":360},[117,575,357],{"class":152},[117,577,578],{"class":119,"line":366},[117,579,580],{"class":152},"  ],\n",[117,582,584,587],{"class":119,"line":583},10,[117,585,586],{"class":123},"  \"servers\"",[117,588,295],{"class":152},[117,590,592,594],{"class":119,"line":591},11,[117,593,301],{"class":123},[117,595,295],{"class":152},[117,597,599,601,603,605],{"class":119,"line":598},12,[117,600,309],{"class":123},[117,602,312],{"class":152},[117,604,315],{"class":127},[117,606,318],{"class":152},[117,608,610,612,614,616],{"class":119,"line":609},13,[117,611,324],{"class":123},[117,613,312],{"class":152},[117,615,329],{"class":127},[117,617,318],{"class":152},[117,619,621,623,625,627,629,632],{"class":119,"line":620},14,[117,622,337],{"class":123},[117,624,340],{"class":152},[117,626,343],{"class":123},[117,628,312],{"class":152},[117,630,631],{"class":127},"\"Bearer ${input:ht-api-key}\"",[117,633,351],{"class":152},[117,635,637],{"class":119,"line":636},15,[117,638,357],{"class":152},[117,640,642],{"class":119,"line":641},16,[117,643,363],{"class":152},[117,645,647],{"class":119,"line":646},17,[117,648,369],{"class":152},[10,650,651,652,654,655,658,659,662,663,21],{},"Apri Copilot Chat, passa alla modalità ",[53,653,471],{}," e usa ",[53,656,657],{},"Configure Tools"," per vedere gli strumenti di Hotelier Tools. VS Code può chiederti di considerare attendibile il server al primo avvio. Per tutti i workspace, esegui ",[53,660,661],{},"MCP: Open User Configuration"," e incolla lì lo stesso blocco. VS Code supporta anche l'accesso dal browser se ometti ",[14,664,475],{},[88,666],{"alt":667,"caption":668,"path":669,"src":670,"height":671,"width":672},"Scheda VS Code / GitHub Copilot della pagina di configurazione MCP di Hotelier Tools: un frammento .vscode/mcp.json con servers, hotelier-tools, type http, l'URL /api/mcp della demo e un'intestazione Authorization con il segnaposto htk_YOUR_API_KEY, poi Turn on Agent mode in Copilot Chat","La pagina MCP Setup ha un frammento pronto per ogni client. La demo mostra il proprio indirizzo; il tuo è dashboard.hotelier.tools.","/developer/mcp-setup","/images/blog/demo/en/mcp-config-vscode-copilot.webp",446,1036,[168,674,676],{"id":675},"windsurf-e-gemini-cli","Windsurf e Gemini CLI",[10,678,679,682,683,654,686,689,690,180],{},[53,680,681],{},"Windsurf"," (la cui documentazione ora è sotto Devin) legge ",[14,684,685],{},"~/.codeium/windsurf/mcp_config.json",[14,687,688],{},"serverUrl"," per i server remoti (",[34,691,694],{"href":692,"rel":693},"https://docs.devin.ai/windsurf/plugins/cascade/mcp",[38],"documentazione",[107,696,698],{"className":277,"code":697,"filename":685,"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,699,700,704,710,716,727,741,745,749],{"__ignoreMap":113},[117,701,702],{"class":119,"line":120},[117,703,286],{"class":152},[117,705,706,708],{"class":119,"line":289},[117,707,292],{"class":123},[117,709,295],{"class":152},[117,711,712,714],{"class":119,"line":298},[117,713,301],{"class":123},[117,715,295],{"class":152},[117,717,718,721,723,725],{"class":119,"line":306},[117,719,720],{"class":123},"      \"serverUrl\"",[117,722,312],{"class":152},[117,724,329],{"class":127},[117,726,318],{"class":152},[117,728,729,731,733,735,737,739],{"class":119,"line":321},[117,730,337],{"class":123},[117,732,340],{"class":152},[117,734,343],{"class":123},[117,736,312],{"class":152},[117,738,447],{"class":127},[117,740,351],{"class":152},[117,742,743],{"class":119,"line":334},[117,744,357],{"class":152},[117,746,747],{"class":119,"line":354},[117,748,363],{"class":152},[117,750,751],{"class":119,"line":360},[117,752,369],{"class":152},[10,754,755],{},"Windsurf limita Cascade a 100 strumenti in totale e Hotelier Tools ne offre più di 100, quindi potresti dover disattivare nel pannello MCP quelli che non usi.",[10,757,758,761,762,765,766,769,770,773,774,776,777,180],{},[53,759,760],{},"Gemini CLI"," legge ",[14,763,764],{},"~/.gemini/settings.json"," (oppure ",[14,767,768],{},".gemini/settings.json"," in un progetto) e usa ",[14,771,772],{},"httpUrl"," per questo tipo di server; ",[14,775,379],{}," indicherebbe il vecchio trasporto SSE, che Hotelier Tools non offre (",[34,778,694],{"href":779,"rel":780},"https://geminicli.com/docs/tools/mcp-server/",[38],[107,782,784],{"className":277,"code":783,"filename":764,"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,785,786,790,796,802,813,828,832,836],{"__ignoreMap":113},[117,787,788],{"class":119,"line":120},[117,789,286],{"class":152},[117,791,792,794],{"class":119,"line":289},[117,793,292],{"class":123},[117,795,295],{"class":152},[117,797,798,800],{"class":119,"line":298},[117,799,301],{"class":123},[117,801,295],{"class":152},[117,803,804,807,809,811],{"class":119,"line":306},[117,805,806],{"class":123},"      \"httpUrl\"",[117,808,312],{"class":152},[117,810,329],{"class":127},[117,812,318],{"class":152},[117,814,815,817,819,821,823,826],{"class":119,"line":321},[117,816,337],{"class":123},[117,818,340],{"class":152},[117,820,343],{"class":123},[117,822,312],{"class":152},[117,824,825],{"class":127},"\"Bearer $HT_API_KEY\"",[117,827,351],{"class":152},[117,829,830],{"class":119,"line":334},[117,831,357],{"class":152},[117,833,834],{"class":119,"line":354},[117,835,363],{"class":152},[117,837,838],{"class":119,"line":360},[117,839,369],{"class":152},[10,841,842,843,846,847,849],{},"Oppure dal terminale: ",[14,844,845],{},"gemini mcp add --transport http --header \"Authorization: Bearer htk_YOUR_API_KEY\" hotelier-tools https://dashboard.hotelier.tools/api/mcp",". Digita ",[14,848,225],{}," dentro Gemini CLI per verificare.",[10,851,852],{},"Queste due configurazioni seguono la documentazione di ciascun fornitore; non le abbiamo provate in ogni versione.",[854,855,856,875],"table",{},[857,858,859],"thead",{},[860,861,862,866,869,872],"tr",{},[863,864,865],"th",{},"Strumento",[863,867,868],{},"File di configurazione",[863,870,871],{},"Chiave principale",[863,873,874],{},"Chiave dell'URL",[876,877,878,899,915,934,951],"tbody",{},[860,879,880,883,887,892],{},[881,882,171],"td",{},[881,884,885],{},[14,886,254],{},[881,888,889],{},[14,890,891],{},"mcpServers",[881,893,894,896,897],{},[14,895,379],{}," + ",[14,898,375],{},[860,900,901,903,907,911],{},[881,902,387],{},[881,904,905],{},[14,906,397],{},[881,908,909],{},[14,910,891],{},[881,912,913],{},[14,914,379],{},[860,916,917,920,924,928],{},[881,918,919],{},"VS Code",[881,921,922],{},[14,923,486],{},[881,925,926],{},[14,927,490],{},[881,929,930,896,932],{},[14,931,379],{},[14,933,375],{},[860,935,936,938,943,947],{},[881,937,681],{},[881,939,940],{},[14,941,942],{},"mcp_config.json",[881,944,945],{},[14,946,891],{},[881,948,949],{},[14,950,688],{},[860,952,953,955,960,964],{},[881,954,760],{},[881,956,957],{},[14,958,959],{},"settings.json",[881,961,962],{},[14,963,891],{},[881,965,966],{},[14,967,772],{},[26,969,971],{"id":970},"tre-cose-utili-da-costruire","Tre cose utili da costruire",[10,973,974,975,979,980,984],{},"Il trucco è lasciare che l'agente usi MCP per ",[976,977,978],"em",{},"guardare"," i tuoi dati reali, poi scrivere codice che chiama l'",[34,981,983],{"href":982},"/tools/bot/api-mcp","API REST",", così il risultato gira ogni mese senza AI.",[168,986,988],{"id":987},"un-report-mensile-di-occupazione","Un report mensile di occupazione",[10,990,991],{},"Chiedi a Claude Code (o all'agente di Cursor) in una cartella vuota:",[993,994,995],"prompt",{"label":171},[10,996,997,998,1002],{},"Usa il server MCP hotelier-tools per guardare le mie tipologie di camera e le prenotazioni del mese scorso. Poi scrivi uno script Node.js che chiami l'API REST di Hotelier Tools (specifica: ",[34,999,1000],{"href":1000,"rel":1001},"https://dashboard.hotelier.tools/api/v1/openapi.json",[38],") con la chiave in HT_API_KEY e che, per qualsiasi mese gli passi, stampi occupazione e tariffa media giornaliera per tipologia di camera e li salvi in un CSV.",[10,1004,1005],{},"Un buon script inizia così. Recupera le tipologie di camera e ogni prenotazione che si sovrappone al mese e salva la risposta grezza, così puoi controllare i campi prima di fare i calcoli:",[107,1007,1012],{"className":1008,"code":1009,"filename":1010,"language":1011,"meta":113,"style":113},"language-js shiki shiki-themes github-light github-dark","// Uso: node fetch-month.mjs 2026-09   (serve HT_API_KEY nel tuo ambiente)\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,1013,1014,1019,1036,1042,1058,1070,1095,1107,1112,1116,1145,1185,1240,1253,1257,1261,1279,1319,1340,1390,1395,1416,1438,1449,1466,1472,1477,1488,1501,1524,1529],{"__ignoreMap":113},[117,1015,1016],{"class":119,"line":120},[117,1017,1018],{"class":138},"// Uso: node fetch-month.mjs 2026-09   (serve HT_API_KEY nel tuo ambiente)\n",[117,1020,1021,1024,1027,1030,1033],{"class":119,"line":289},[117,1022,1023],{"class":131},"import",[117,1025,1026],{"class":152}," { writeFile } ",[117,1028,1029],{"class":131},"from",[117,1031,1032],{"class":127}," \"node:fs/promises\"",[117,1034,1035],{"class":152},";\n",[117,1037,1038],{"class":119,"line":298},[117,1039,1041],{"emptyLinePlaceholder":1040},true,"\n",[117,1043,1044,1047,1050,1053,1056],{"class":119,"line":306},[117,1045,1046],{"class":131},"const",[117,1048,1049],{"class":123}," API",[117,1051,1052],{"class":131}," =",[117,1054,1055],{"class":127}," \"https://dashboard.hotelier.tools/api/v1\"",[117,1057,1035],{"class":152},[117,1059,1060,1062,1065,1067],{"class":119,"line":321},[117,1061,1046],{"class":131},[117,1063,1064],{"class":123}," headers",[117,1066,1052],{"class":131},[117,1068,1069],{"class":152}," {\n",[117,1071,1072,1075,1078,1081,1083,1086,1088,1090,1093],{"class":119,"line":334},[117,1073,1074],{"class":152},"  Authorization: ",[117,1076,1077],{"class":127},"`Bearer ${",[117,1079,1080],{"class":152},"process",[117,1082,21],{"class":127},[117,1084,1085],{"class":152},"env",[117,1087,21],{"class":127},[117,1089,104],{"class":123},[117,1091,1092],{"class":127},"}`",[117,1094,318],{"class":152},[117,1096,1097,1100,1102,1105],{"class":119,"line":354},[117,1098,1099],{"class":127},"  \"Content-Type\"",[117,1101,312],{"class":152},[117,1103,1104],{"class":127},"\"application/json\"",[117,1106,318],{"class":152},[117,1108,1109],{"class":119,"line":360},[117,1110,1111],{"class":152},"};\n",[117,1113,1114],{"class":119,"line":366},[117,1115,1041],{"emptyLinePlaceholder":1040},[117,1117,1118,1121,1124,1127,1130,1134,1137,1140,1142],{"class":119,"line":583},[117,1119,1120],{"class":131},"async",[117,1122,1123],{"class":131}," function",[117,1125,1126],{"class":191}," call",[117,1128,1129],{"class":152},"(",[117,1131,1133],{"class":1132},"s4XuR","path",[117,1135,1136],{"class":152},", ",[117,1138,1139],{"class":1132},"options",[117,1141,1052],{"class":131},[117,1143,1144],{"class":152}," {}) {\n",[117,1146,1147,1150,1153,1155,1158,1161,1163,1166,1169,1172,1174,1176,1179,1182],{"class":119,"line":591},[117,1148,1149],{"class":131},"  const",[117,1151,1152],{"class":123}," res",[117,1154,1052],{"class":131},[117,1156,1157],{"class":131}," await",[117,1159,1160],{"class":191}," fetch",[117,1162,1129],{"class":152},[117,1164,1165],{"class":127},"`${",[117,1167,1168],{"class":123},"API",[117,1170,1171],{"class":127},"}${",[117,1173,1133],{"class":152},[117,1175,1092],{"class":127},[117,1177,1178],{"class":152},", { ",[117,1180,1181],{"class":131},"...",[117,1183,1184],{"class":152},"options, headers });\n",[117,1186,1187,1190,1192,1195,1198,1201,1204,1207,1209,1211,1214,1216,1219,1222,1225,1227,1229,1232,1235,1237],{"class":119,"line":598},[117,1188,1189],{"class":131},"  if",[117,1191,56],{"class":152},[117,1193,1194],{"class":131},"!",[117,1196,1197],{"class":152},"res.ok) ",[117,1199,1200],{"class":131},"throw",[117,1202,1203],{"class":131}," new",[117,1205,1206],{"class":191}," Error",[117,1208,1129],{"class":152},[117,1210,1165],{"class":127},[117,1212,1213],{"class":152},"res",[117,1215,21],{"class":127},[117,1217,1218],{"class":152},"status",[117,1220,1221],{"class":127},"} ${",[117,1223,1224],{"class":131},"await",[117,1226,1152],{"class":152},[117,1228,21],{"class":127},[117,1230,1231],{"class":191},"text",[117,1233,1234],{"class":127},"()",[117,1236,1092],{"class":127},[117,1238,1239],{"class":152},");\n",[117,1241,1242,1245,1248,1250],{"class":119,"line":609},[117,1243,1244],{"class":131},"  return",[117,1246,1247],{"class":152}," res.",[117,1249,279],{"class":191},[117,1251,1252],{"class":152},"();\n",[117,1254,1255],{"class":119,"line":620},[117,1256,369],{"class":152},[117,1258,1259],{"class":119,"line":636},[117,1260,1041],{"emptyLinePlaceholder":1040},[117,1262,1263,1265,1268,1270,1273,1276],{"class":119,"line":641},[117,1264,1046],{"class":131},[117,1266,1267],{"class":123}," month",[117,1269,1052],{"class":131},[117,1271,1272],{"class":152}," process.argv[",[117,1274,1275],{"class":123},"2",[117,1277,1278],{"class":152},"];\n",[117,1280,1281,1283,1286,1289,1291,1294,1297,1300,1303,1306,1308,1311,1313,1316],{"class":119,"line":646},[117,1282,1046],{"class":131},[117,1284,1285],{"class":152}," [",[117,1287,1288],{"class":123},"year",[117,1290,1136],{"class":152},[117,1292,1293],{"class":123},"mon",[117,1295,1296],{"class":152},"] ",[117,1298,1299],{"class":131},"=",[117,1301,1302],{"class":152}," month.",[117,1304,1305],{"class":191},"split",[117,1307,1129],{"class":152},[117,1309,1310],{"class":127},"\"-\"",[117,1312,70],{"class":152},[117,1314,1315],{"class":191},"map",[117,1317,1318],{"class":152},"(Number);\n",[117,1320,1322,1324,1327,1329,1332,1335,1338],{"class":119,"line":1321},18,[117,1323,1046],{"class":131},[117,1325,1326],{"class":123}," startDate",[117,1328,1052],{"class":131},[117,1330,1331],{"class":127}," `${",[117,1333,1334],{"class":152},"month",[117,1336,1337],{"class":127},"}-01`",[117,1339,1035],{"class":152},[117,1341,1343,1345,1348,1350,1352,1355,1358,1361,1364,1367,1370,1373,1376,1379,1381,1383,1385,1388],{"class":119,"line":1342},19,[117,1344,1046],{"class":131},[117,1346,1347],{"class":123}," endDate",[117,1349,1052],{"class":131},[117,1351,1203],{"class":131},[117,1353,1354],{"class":191}," Date",[117,1356,1357],{"class":152},"(Date.",[117,1359,1360],{"class":191},"UTC",[117,1362,1363],{"class":152},"(year, mon, ",[117,1365,1366],{"class":123},"0",[117,1368,1369],{"class":152},")).",[117,1371,1372],{"class":191},"toISOString",[117,1374,1375],{"class":152},"().",[117,1377,1378],{"class":191},"slice",[117,1380,1129],{"class":152},[117,1382,1366],{"class":123},[117,1384,1136],{"class":152},[117,1386,1387],{"class":123},"10",[117,1389,1239],{"class":152},[117,1391,1393],{"class":119,"line":1392},20,[117,1394,1041],{"emptyLinePlaceholder":1040},[117,1396,1398,1400,1403,1405,1407,1409,1411,1414],{"class":119,"line":1397},21,[117,1399,1046],{"class":131},[117,1401,1402],{"class":123}," roomTypes",[117,1404,1052],{"class":131},[117,1406,1157],{"class":131},[117,1408,1126],{"class":191},[117,1410,1129],{"class":152},[117,1412,1413],{"class":127},"\"/room-types\"",[117,1415,1239],{"class":152},[117,1417,1419,1421,1424,1426,1428,1430,1432,1435],{"class":119,"line":1418},22,[117,1420,1046],{"class":131},[117,1422,1423],{"class":123}," reservations",[117,1425,1052],{"class":131},[117,1427,1157],{"class":131},[117,1429,1126],{"class":191},[117,1431,1129],{"class":152},[117,1433,1434],{"class":127},"\"/methods/getReservationsByDateRange\"",[117,1436,1437],{"class":152},", {\n",[117,1439,1441,1444,1447],{"class":119,"line":1440},23,[117,1442,1443],{"class":152},"  method: ",[117,1445,1446],{"class":127},"\"POST\"",[117,1448,318],{"class":152},[117,1450,1452,1455,1458,1460,1463],{"class":119,"line":1451},24,[117,1453,1454],{"class":152},"  body: ",[117,1456,1457],{"class":123},"JSON",[117,1459,21],{"class":152},[117,1461,1462],{"class":191},"stringify",[117,1464,1465],{"class":152},"({ params: { startDate, endDate } }),\n",[117,1467,1469],{"class":119,"line":1468},25,[117,1470,1471],{"class":152},"});\n",[117,1473,1475],{"class":119,"line":1474},26,[117,1476,1041],{"emptyLinePlaceholder":1040},[117,1478,1480,1482,1485],{"class":119,"line":1479},27,[117,1481,1224],{"class":131},[117,1483,1484],{"class":191}," writeFile",[117,1486,1487],{"class":152},"(\n",[117,1489,1491,1494,1496,1499],{"class":119,"line":1490},28,[117,1492,1493],{"class":127},"  `raw-${",[117,1495,1334],{"class":152},[117,1497,1498],{"class":127},"}.json`",[117,1500,318],{"class":152},[117,1502,1504,1507,1509,1511,1514,1517,1519,1521],{"class":119,"line":1503},29,[117,1505,1506],{"class":123},"  JSON",[117,1508,21],{"class":152},[117,1510,1462],{"class":191},[117,1512,1513],{"class":152},"({ roomTypes: roomTypes.data, reservations: reservations.result }, ",[117,1515,1516],{"class":123},"null",[117,1518,1136],{"class":152},[117,1520,1275],{"class":123},[117,1522,1523],{"class":152},")\n",[117,1525,1527],{"class":119,"line":1526},30,[117,1528,1239],{"class":152},[117,1530,1532,1535,1538,1540,1543,1545,1547],{"class":119,"line":1531},31,[117,1533,1534],{"class":152},"console.",[117,1536,1537],{"class":191},"log",[117,1539,1129],{"class":152},[117,1541,1542],{"class":127},"`Saved raw-${",[117,1544,1334],{"class":152},[117,1546,1498],{"class":127},[117,1548,1239],{"class":152},[10,1550,1551,1552,1555,1556,1559],{},"La specifica dell'API dice che gli oggetti prenotazione provengono da Little Hotelier e che la loro \"forma può variare\", quindi lascia che l'agente legga il file salvato prima di calcolare qualsiasi cosa. ",[14,1553,1554],{},"/room-types"," restituisce ",[14,1557,1558],{},"totalRooms"," per tipologia, che è l'altra metà del calcolo dell'occupazione.",[168,1561,1563],{"id":1562},"una-sincronizzazione-con-google-sheets","Una sincronizzazione con Google Sheets",[10,1565,1566,1567,1570],{},"Per un foglio che elenca gli arrivi dei prossimi 30 giorni e si aggiorna ogni mattina, apri il tuo foglio di calcolo, vai su ",[53,1568,1569],{},"Estensioni → Apps Script"," e incolla:",[107,1572,1575],{"className":1008,"code":1573,"filename":1574,"language":1011,"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,1576,1577,1588,1615,1650,1665,1715,1727,1762,1766,1783,1796,1806,1811,1847,1851,1887,1892,1897,1914,1950,1960,2006,2054],{"__ignoreMap":113},[117,1578,1579,1582,1585],{"class":119,"line":120},[117,1580,1581],{"class":131},"function",[117,1583,1584],{"class":191}," syncArrivals",[117,1586,1587],{"class":152},"() {\n",[117,1589,1590,1592,1595,1597,1600,1603,1605,1608,1610,1613],{"class":119,"line":289},[117,1591,1149],{"class":131},[117,1593,1594],{"class":123}," key",[117,1596,1052],{"class":131},[117,1598,1599],{"class":152}," PropertiesService.",[117,1601,1602],{"class":191},"getScriptProperties",[117,1604,1375],{"class":152},[117,1606,1607],{"class":191},"getProperty",[117,1609,1129],{"class":152},[117,1611,1612],{"class":127},"'HT_API_KEY'",[117,1614,1239],{"class":152},[117,1616,1617,1619,1622,1624,1627,1630,1633,1636,1639,1642,1645,1648],{"class":119,"line":298},[117,1618,1149],{"class":131},[117,1620,1621],{"class":191}," fmt",[117,1623,1052],{"class":131},[117,1625,1626],{"class":1132}," d",[117,1628,1629],{"class":131}," =>",[117,1631,1632],{"class":152}," Utilities.",[117,1634,1635],{"class":191},"formatDate",[117,1637,1638],{"class":152},"(d, Session.",[117,1640,1641],{"class":191},"getScriptTimeZone",[117,1643,1644],{"class":152},"(), ",[117,1646,1647],{"class":127},"'yyyy-MM-dd'",[117,1649,1239],{"class":152},[117,1651,1652,1654,1657,1659,1661,1663],{"class":119,"line":306},[117,1653,1149],{"class":131},[117,1655,1656],{"class":123}," today",[117,1658,1052],{"class":131},[117,1660,1203],{"class":131},[117,1662,1354],{"class":191},[117,1664,1252],{"class":152},[117,1666,1667,1669,1672,1674,1676,1678,1681,1684,1687,1690,1693,1696,1699,1701,1704,1706,1708,1710,1713],{"class":119,"line":321},[117,1668,1149],{"class":131},[117,1670,1671],{"class":123}," in30",[117,1673,1052],{"class":131},[117,1675,1203],{"class":131},[117,1677,1354],{"class":191},[117,1679,1680],{"class":152},"(today.",[117,1682,1683],{"class":191},"getTime",[117,1685,1686],{"class":152},"() ",[117,1688,1689],{"class":131},"+",[117,1691,1692],{"class":123}," 30",[117,1694,1695],{"class":131}," *",[117,1697,1698],{"class":123}," 24",[117,1700,1695],{"class":131},[117,1702,1703],{"class":123}," 60",[117,1705,1695],{"class":131},[117,1707,1703],{"class":123},[117,1709,1695],{"class":131},[117,1711,1712],{"class":123}," 1000",[117,1714,1239],{"class":152},[117,1716,1717,1719,1722,1724],{"class":119,"line":334},[117,1718,1149],{"class":131},[117,1720,1721],{"class":123}," url",[117,1723,1052],{"class":131},[117,1725,1726],{"class":127}," 'https://dashboard.hotelier.tools/api/v1/reservations'\n",[117,1728,1729,1732,1735,1738,1740,1743,1745,1748,1750,1752,1755,1757,1760],{"class":119,"line":354},[117,1730,1731],{"class":131},"    +",[117,1733,1734],{"class":127}," '?startDate='",[117,1736,1737],{"class":131}," +",[117,1739,1621],{"class":191},[117,1741,1742],{"class":152},"(today) ",[117,1744,1689],{"class":131},[117,1746,1747],{"class":127}," '&endDate='",[117,1749,1737],{"class":131},[117,1751,1621],{"class":191},[117,1753,1754],{"class":152},"(in30) ",[117,1756,1689],{"class":131},[117,1758,1759],{"class":127}," '&limit=100'",[117,1761,1035],{"class":152},[117,1763,1764],{"class":119,"line":360},[117,1765,1041],{"emptyLinePlaceholder":1040},[117,1767,1768,1770,1772,1774,1777,1780],{"class":119,"line":366},[117,1769,1149],{"class":131},[117,1771,1152],{"class":123},[117,1773,1052],{"class":131},[117,1775,1776],{"class":152}," UrlFetchApp.",[117,1778,1779],{"class":191},"fetch",[117,1781,1782],{"class":152},"(url, {\n",[117,1784,1785,1788,1791,1793],{"class":119,"line":583},[117,1786,1787],{"class":152},"    headers: { Authorization: ",[117,1789,1790],{"class":127},"'Bearer '",[117,1792,1737],{"class":131},[117,1794,1795],{"class":152}," key },\n",[117,1797,1798,1801,1804],{"class":119,"line":591},[117,1799,1800],{"class":152},"    muteHttpExceptions: ",[117,1802,1803],{"class":123},"true",[117,1805,318],{"class":152},[117,1807,1808],{"class":119,"line":598},[117,1809,1810],{"class":152},"  });\n",[117,1812,1813,1815,1818,1821,1823,1826,1829,1832,1834,1836,1838,1841,1844],{"class":119,"line":609},[117,1814,1189],{"class":131},[117,1816,1817],{"class":152}," (res.",[117,1819,1820],{"class":191},"getResponseCode",[117,1822,1686],{"class":152},[117,1824,1825],{"class":131},"!==",[117,1827,1828],{"class":123}," 200",[117,1830,1831],{"class":152},") ",[117,1833,1200],{"class":131},[117,1835,1203],{"class":131},[117,1837,1206],{"class":191},[117,1839,1840],{"class":152},"(res.",[117,1842,1843],{"class":191},"getContentText",[117,1845,1846],{"class":152},"());\n",[117,1848,1849],{"class":119,"line":620},[117,1850,1041],{"emptyLinePlaceholder":1040},[117,1852,1853,1855,1858,1860,1863,1865,1868,1870,1872,1875,1877,1879,1882,1884],{"class":119,"line":636},[117,1854,1149],{"class":131},[117,1856,1857],{"class":123}," rows",[117,1859,1052],{"class":131},[117,1861,1862],{"class":123}," JSON",[117,1864,21],{"class":152},[117,1866,1867],{"class":191},"parse",[117,1869,1840],{"class":152},[117,1871,1843],{"class":191},[117,1873,1874],{"class":152},"()).data.",[117,1876,1315],{"class":191},[117,1878,1129],{"class":152},[117,1880,1881],{"class":1132},"r",[117,1883,1629],{"class":131},[117,1885,1886],{"class":152}," [\n",[117,1888,1889],{"class":119,"line":641},[117,1890,1891],{"class":152},"    r.id, r.guestName, r.status, r.checkIn, r.checkOut, r.roomType, r.totalAmount,\n",[117,1893,1894],{"class":119,"line":646},[117,1895,1896],{"class":152},"  ]);\n",[117,1898,1899,1901,1904,1906,1909,1912],{"class":119,"line":1321},[117,1900,1149],{"class":131},[117,1902,1903],{"class":123}," book",[117,1905,1052],{"class":131},[117,1907,1908],{"class":152}," SpreadsheetApp.",[117,1910,1911],{"class":191},"getActive",[117,1913,1252],{"class":152},[117,1915,1916,1918,1921,1923,1926,1929,1931,1934,1936,1939,1941,1944,1946,1948],{"class":119,"line":1342},[117,1917,1149],{"class":131},[117,1919,1920],{"class":123}," sheet",[117,1922,1052],{"class":131},[117,1924,1925],{"class":152}," book.",[117,1927,1928],{"class":191},"getSheetByName",[117,1930,1129],{"class":152},[117,1932,1933],{"class":127},"'Arrivals'",[117,1935,1831],{"class":152},[117,1937,1938],{"class":131},"||",[117,1940,1925],{"class":152},[117,1942,1943],{"class":191},"insertSheet",[117,1945,1129],{"class":152},[117,1947,1933],{"class":127},[117,1949,1239],{"class":152},[117,1951,1952,1955,1958],{"class":119,"line":1392},[117,1953,1954],{"class":152},"  sheet.",[117,1956,1957],{"class":191},"clearContents",[117,1959,1252],{"class":152},[117,1961,1962,1964,1967,1970,1973,1975,1978,1980,1983,1985,1988,1990,1993,1995,1998,2000,2003],{"class":119,"line":1397},[117,1963,1954],{"class":152},[117,1965,1966],{"class":191},"appendRow",[117,1968,1969],{"class":152},"([",[117,1971,1972],{"class":127},"'ID'",[117,1974,1136],{"class":152},[117,1976,1977],{"class":127},"'Guest'",[117,1979,1136],{"class":152},[117,1981,1982],{"class":127},"'Status'",[117,1984,1136],{"class":152},[117,1986,1987],{"class":127},"'Check-in'",[117,1989,1136],{"class":152},[117,1991,1992],{"class":127},"'Check-out'",[117,1994,1136],{"class":152},[117,1996,1997],{"class":127},"'Room type'",[117,1999,1136],{"class":152},[117,2001,2002],{"class":127},"'Total'",[117,2004,2005],{"class":152},"]);\n",[117,2007,2008,2010,2013,2016,2019,2022,2024,2026,2028,2031,2034,2036,2039,2041,2044,2046,2048,2051],{"class":119,"line":1418},[117,2009,1189],{"class":131},[117,2011,2012],{"class":152}," (rows.",[117,2014,2015],{"class":123},"length",[117,2017,2018],{"class":152},") sheet.",[117,2020,2021],{"class":191},"getRange",[117,2023,1129],{"class":152},[117,2025,1275],{"class":123},[117,2027,1136],{"class":152},[117,2029,2030],{"class":123},"1",[117,2032,2033],{"class":152},", rows.",[117,2035,2015],{"class":123},[117,2037,2038],{"class":152},", rows[",[117,2040,1366],{"class":123},[117,2042,2043],{"class":152},"].",[117,2045,2015],{"class":123},[117,2047,70],{"class":152},[117,2049,2050],{"class":191},"setValues",[117,2052,2053],{"class":152},"(rows);\n",[117,2055,2056],{"class":119,"line":1440},[117,2057,369],{"class":152},[10,2059,2060,2061,2064,2065,2067,2068,2071,2072,2075],{},"Salva la chiave in ",[53,2062,2063],{},"Impostazioni progetto → Proprietà script"," come ",[14,2066,104],{},", esegui la funzione una volta per concedere l'accesso, poi aggiungi un attivatore giornaliero basato sul tempo in ",[53,2069,2070],{},"Attivatori",". ",[14,2073,2074],{},"/reservations"," restituisce al massimo 100 soggiorni per chiamata, filtrati per data di check-in, quindi dividi in settimane i mesi molto pieni. Ricorda che ora il foglio contiene i nomi degli ospiti: condividilo con attenzione.",[168,2077,2079],{"id":2078},"una-piccola-dashboard-personalizzata","Una piccola dashboard personalizzata",[993,2081,2082],{"label":387},[10,2083,2084],{},"Crea una piccola web app Node.js che mostri l'occupazione di stanotte, gli arrivi e le partenze di oggi e i soggiorni con un saldo da pagare, usando l'API REST di Hotelier Tools. Tieni HT_API_KEY solo sul server; il browser deve chiamare il mio server, mai l'API direttamente. Metti le risposte in cache per cinque minuti.",[10,2086,2087],{},"Due regole la rendono sicura: la chiave resta sul server (chiunque apra una pagina può leggere le chiavi nel codice del browser) e usi la cache, perché l'API consente 100 richieste al minuto per indirizzo IP.",[26,2089,2091],{"id":2090},"mcp-o-api-rest-quale-usare","MCP o API REST: quale usare?",[854,2093,2094,2105],{},[857,2095,2096],{},[860,2097,2098,2100,2103],{},[863,2099],{},[863,2101,2102],{},"Server MCP",[863,2104,983],{},[876,2106,2107,2118,2132,2147],{},[860,2108,2109,2112,2115],{},[881,2110,2111],{},"Ideale per",[881,2113,2114],{},"Fare domande, lasciare che un agente esplori mentre scrive codice",[881,2116,2117],{},"Script, Sheets, dashboard che girano a intervalli regolari",[860,2119,2120,2123,2127],{},[881,2121,2122],{},"Indirizzo",[881,2124,2125],{},[14,2126,16],{},[881,2128,2129],{},[14,2130,2131],{},"https://dashboard.hotelier.tools/api/v1",[860,2133,2134,2137,2140],{},[881,2135,2136],{},"Autenticazione",[881,2138,2139],{},"Chiave API o accesso dal browser",[881,2141,2142,2143,2146],{},"Chiave API (",[14,2144,2145],{},"Authorization: Bearer htk_…",")",[860,2148,2149,2152,2157],{},[881,2150,2151],{},"Documentazione",[881,2153,2154,2155,2146],{},"Pagina MCP Setup (",[14,2156,669],{},[881,2158,2159,2160,2146],{},"Explorer Swagger (",[14,2161,2162],{},"/developer/rest-api",[10,2164,2165,2166,21],{},"Entrambi usano la stessa chiave e gli stessi permessi. La guida all'API REST è in ",[34,2167,2168],{"href":43},"API di Little Hotelier",[26,2170,2172],{"id":2171},"strumenti-di-lettura-e-scrittura-tieni-lagente-al-guinzaglio","Strumenti di lettura e scrittura: tieni l'agente al guinzaglio",[10,2174,2175],{},"Gli agenti di programmazione sono bravi a eseguire strumenti in fretta, ed è esattamente per questo che qui conviene rallentarli.",[236,2177,2178,2184,2190,2208],{},[49,2179,2180,2183],{},[53,2181,2182],{},"Le scritture vengono eseguite appena l'agente le richiama."," Fuori dalla dashboard di Hotelier Tools non c'è nessuna scheda di approvazione. Modificare una prenotazione, registrare un pagamento, applicare prezzi o impostare uno stop sell avviene non appena lo strumento viene eseguito. Lascia attiva l'impostazione del tuo editor \"chiedi prima di eseguire gli strumenti\" e non usare modalità di esecuzione automatica con questo server.",[49,2185,2186,2189],{},[53,2187,2188],{},"Le azioni irreversibili sono comunque bloccate."," Otto strumenti (invio di fatture per email agli ospiti, rimborsi, invio dell'indagine INE, inviti al team, invio di link agli ospiti per email, risposte alle domande di Booking.com e il controllo della lista d'attesa che scrive agli ospiti) sono disponibili solo nella dashboard.",[49,2191,2192,2195,2196,2199,2200,2203,2204,2207],{},[53,2193,2194],{},"Le modifiche alle prenotazioni sono in due passaggi."," ",[14,2197,2198],{},"propose_reservation_changes"," mostra il prima e il dopo; ",[14,2201,2202],{},"apply_reservation_changes"," richiede ",[14,2205,2206],{},"confirmed: true",". Leggi la proposta.",[49,2209,2210,2213,2214,2217,2218,2221,2222,21],{},[53,2211,2212],{},"Non committare mai una chiave."," Usa riferimenti del tipo ",[14,2215,2216],{},"${HT_API_KEY}",", aggiungi i file di configurazione locali a ",[14,2219,2220],{},".gitignore"," e, se una chiave trapela, revocala su ",[14,2223,69],{},[26,2225,2227],{"id":2226},"risoluzione-dei-problemi-il-server-non-compare","Risoluzione dei problemi: \"il server non compare\"",[236,2229,2230,2236,2244,2255,2261,2269,2285,2294],{},[49,2231,2232,2235],{},[53,2233,2234],{},"Non compare nulla dopo aver modificato una configurazione:"," riavvia l'editor o la CLI. La maggior parte degli strumenti legge le configurazioni MCP all'avvio.",[49,2237,2238,2241,2242,21],{},[53,2239,2240],{},"Claude Code o VS Code ignora il server:"," controlla che ci sia ",[14,2243,375],{},[49,2245,2246,2249,2250,2252,2253,21],{},[53,2247,2248],{},"Gemini CLI si connette ma fallisce:"," usa ",[14,2251,772],{},", non ",[14,2254,379],{},[49,2256,2257,2260],{},[53,2258,2259],{},"401:"," chiave sbagliata o revocata, oppure la variabile d'ambiente non è impostata in quel terminale.",[49,2262,2263,2266,2267,21],{},[53,2264,2265],{},"400 \"No Little Hotelier credentials configured\":"," collega Little Hotelier in ",[14,2268,59],{},[49,2270,2271,2278,2279,2281,2282,21],{},[53,2272,2273,2274,2277],{},"423 ",[14,2275,2276],{},"lh_frozen",":"," l'accesso a Little Hotelier è sospeso dopo un login fallito (spesso una password scaduta). Salva la nuova password in ",[53,2280,55],{}," oppure premi ",[53,2283,2284],{},"Check now & resume",[49,2286,2287,2290,2291,21],{},[53,2288,2289],{},"429:"," troppe richieste; attendi il tempo indicato in ",[14,2292,2293],{},"Retry-After",[49,2295,2296,2299,2300,2303],{},[53,2297,2298],{},"L'a capo con la barra rovesciata non funziona su Windows:"," PowerShell non usa ",[14,2301,2302],{},"\\"," per proseguire le righe. Incolla i comandi su una sola riga, come mostrato sopra.",[2305,2306],"demo-cta",{"path":669},[26,2308,2310],{"id":2309},"prossimi-passi","Prossimi passi",[236,2312,2313,2326,2333],{},[49,2314,2315,2316,2320,2321,2325],{},"Non sei uno sviluppatore? ",[34,2317,2319],{"href":2318},"/blog/connect-claude-to-little-hotelier","Collega Claude"," o ",[34,2322,2324],{"href":2323},"/blog/connect-chatgpt-to-little-hotelier","ChatGPT"," direttamente dal browser.",[49,2327,2328,2329,21],{},"Il concetto è nuovo per te? Leggi ",[34,2330,2332],{"href":2331},"/blog/what-is-mcp-server-hotels","cos'è un server MCP",[49,2334,2335,2336,21],{},"Vuoi fogli di calcolo senza codice? Leggi ",[34,2337,2339],{"href":2338},"/blog/export-little-hotelier-reservations-excel","esportare le prenotazioni in Excel",[2341,2342,2343],"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":2345},[2346,2347,2353,2358,2359,2360,2361],{"id":28,"depth":289,"text":29},{"id":162,"depth":289,"text":163,"children":2348},[2349,2350,2351,2352],{"id":170,"depth":298,"text":171},{"id":386,"depth":298,"text":387},{"id":479,"depth":298,"text":480},{"id":675,"depth":298,"text":676},{"id":970,"depth":289,"text":971,"children":2354},[2355,2356,2357],{"id":987,"depth":298,"text":988},{"id":1562,"depth":298,"text":1563},{"id":2078,"depth":298,"text":2079},{"id":2090,"depth":289,"text":2091},{"id":2171,"depth":289,"text":2172},{"id":2226,"depth":289,"text":2227},{"id":2309,"depth":289,"text":2310},"Collega il server MCP di Hotelier Tools a Claude Code, Cursor, VS Code, Windsurf o Gemini CLI e crea report di occupazione, sync con Sheets o dashboard.","md",{"seoTitle":2365,"date":2366,"category":2367,"tags":2368,"keywords":2373,"feature":2382,"demoPath":669,"cover":2383,"coverAlt":2384,"faq":2385},"Little Hotelier MCP in Claude Code, Cursor e VS Code","2026-10-03","ai",[2369,2370,386,2371,2372],"mcp","claude code","vs code","api",[2374,2375,2376,2377,2378,2379,2380,2381],"claude code mcp","configurare mcp claude code","cursor mcp.json","vscode mcp.json","claude code per non sviluppatori","little hotelier mcp","gemini cli mcp","windsurf mcp config","api-mcp","/images/blog/demo/en/mcp-setup.webp","Guida alla configurazione MCP in Hotelier Tools: una spiegazione What is MCP? e le schede Client configuration per Claude Desktop, VS Code, Cursor e Custom / SDK, con Claude Desktop selezionato e il suo frammento claude_desktop_config.json",[2386,2389,2392,2395,2398],{"q":2387,"a":2388},"Qual è il comando claude mcp add per Little Hotelier?","Esegui: claude mcp add --transport http hotelier-tools https://dashboard.hotelier.tools/api/mcp --header \"Authorization: Bearer htk_YOUR_API_KEY\". Sostituisci la chiave con una di Developer, API Keys in Hotelier Tools, poi verifica con /mcp dentro Claude Code.",{"q":2390,"a":2391},"Dove si trova mcp.json in Cursor e VS Code?","Cursor legge ~/.cursor/mcp.json per ogni progetto e .cursor/mcp.json dentro un progetto. VS Code legge .vscode/mcp.json nel workspace e un file a livello utente che apri con il comando MCP: Open User Configuration. VS Code usa la chiave servers, non mcpServers.",{"q":2393,"a":2394},"Devo essere uno sviluppatore per usare Claude Code con i dati del mio hotel?","No. Installi Claude Code, incolli un comando e poi chiedi a parole tue. Aiuta sapere dove vanno i tuoi file e come eseguire uno script, ma Claude Code può spiegare ogni passaggio mentre lavora.",{"q":2396,"a":2397},"Posso accedere con il login invece di usare una chiave API?","Sì, nei client che supportano OAuth. Aggiungi l'URL del server senza intestazione, poi accedi quando il client lo chiede: in Claude Code esegui /mcp e scegli di autenticarti. L'accesso dura 30 giorni. Le chiavi sono meglio per gli script che girano senza supervisione.",{"q":2399,"a":2400},"È un'API ufficiale di Little Hotelier o SiteMinder?","No. Hotelier Tools è indipendente e non è affiliato né approvato da SiteMinder o Little Hotelier. Si collega con il login di Little Hotelier della tua struttura e offre una propria API REST e un proprio server MCP.","/blog/it/little-hotelier-mcp-claude-code-cursor-vscode",{"title":5,"description":2362},"blog/it/little-hotelier-mcp-claude-code-cursor-vscode","zDlftMyKNqbTOrXQl1vJdyJYJBMUm9XT3AHavpcisgQ",[2406,2407,2408,2409,2410,2411,2412,2413,863],"de","en-gb","en","es","fr","id","it","pt",[2415,2434,2456,2475,2496,2514,2518,2535,2549,2567,2588,2607,2626,2645,2664,2683,2703,2721,2740,2759,2779,2796,2814,2829,2844],{"path":2416,"title":2417,"description":2418,"meta":2419},"/blog/it/guest-registration-rules-by-country","Alloggiati Web e registrazione ospiti per paese (2026): Italia, Spagna, Portogallo, Germania, Francia, Brasile, Thailandia, Indonesia","Quali ospiti registrare, quali dati, entro quando e dove: Italia, Spagna, Portogallo, Germania, Francia, Brasile, Thailandia, Indonesia. Link ufficiali.",{"date":2366,"category":2420,"tags":2421,"keywords":2425,"cover":2432,"coverAlt":2433},"compliance",[2422,2420,2411,2423,2424],"guest registration","police","little hotelier",[2426,2427,2428,2429,2430,2431],"alloggiati web","comunicazione ospiti questura","alloggiati web polizia di stato","registrazione ospiti hotel documento","perché gli hotel chiedono il passaporto","schedina alloggiati","/images/blog/demo/en/automated-checks-moment-on-arrival.webp","Controlli When they arrive in Hotelier Tools: ID / passport (police register), assegnazione fisica della camera e validazione di indirizzo e provenienza attivati, con ciò che ogni controllo può e non può fare",{"path":2435,"title":2436,"description":2437,"meta":2438},"/blog/it/little-hotelier-alternatives","Alternative a Little Hotelier nel 2026: confronto onesto con Cloudbeds, Mews, Beds24, Lodgify, Smoobu e Hostaway","Cloudbeds, Mews, Beds24, Lodgify, Smoobu o Hostaway? A chi serve ciascuno, come si paga, accesso API e quando conviene restare su Little Hotelier.",{"date":2366,"category":2439,"tags":2440,"keywords":2445,"cover":2454,"coverAlt":2455},"tips",[2441,2442,2443,2424,2444],"pms","comparison","alternatives","cloudbeds",[2446,2447,2448,2449,2450,2451,2452,2453],"little hotelier alternative","little hotelier recensioni","little hotelier vs cloudbeds","little hotelier prezzo","little hotelier siteminder","miglior gestionale hotel piccoli","little hotelier vs lodgify","gestionale b&b","/images/blog/demo/en/dashboard-overview.webp","Dashboard iniziale di Hotelier Tools per la struttura demo Hotel Demo Sol: una scheda Open AI chat, un avviso che due canali di messaggistica con gli ospiti richiedono attenzione e riquadri di stato per Little Hotelier, Booking.com, conoscenza AI e città dei prezzi",{"path":2457,"title":2458,"description":2459,"meta":2460},"/blog/it/ai-assistant-hotel-front-desk","Assistente AI per hotel: cosa può fare alla reception, con la tua approvazione","Un assistente AI per hotel consulta prenotazioni, prepara risposte agli ospiti e propone modifiche. Cosa fa in sicurezza e perché approvi tu ogni modifica.",{"date":2366,"category":2367,"tags":2461,"keywords":2465,"feature":2472,"cover":2473,"coverAlt":2474},[2367,2462,2463,2464,2424],"ai assistant","front desk","approvals",[2466,2467,2468,2469,2470,2471],"assistente ai per hotel","agente ai per hotel","intelligenza artificiale per hotel","chatbot ai per hotel","receptionist ai hotel","assistente ai reception","ai-assistant","/images/blog/demo/en/ai-chat-start.webp","Schermata iniziale dell'assistente AI di Hotelier Tools: avvisa che qualsiasi azione che modifica i dati chiede prima conferma, con domande suggerite e la cronologia delle chat a sinistra",{"path":2476,"title":2477,"description":2478,"meta":2479},"/blog/it/booking-com-invalid-card-no-show","Carta non valida su Booking.com o no-show: cosa fare, passo per passo","Segnala la carta come non valida, dai 24 ore all'ospite e cancella senza commissione. Più scadenze del no-show, carte virtuali rifiutate e prevenzione.",{"date":2366,"category":2480,"tags":2481,"keywords":2486,"feature":2493,"cover":2494,"coverAlt":2495},"operations",[2482,2483,2484,2424,2485],"booking.com","no-show","payments","automated checks",[2487,2488,2489,2490,2491,2492],"carta non valida booking","cancellazione booking carta non valida","no show booking penale","no show booking commissione","carta virtuale booking rifiutata","no show hotel iva","automated-checks","/images/blog/demo/en/automated-checks-issues.webp","Pagina Issues di Hotelier Tools con 20 problemi aperti, 5 risolti e 25 in totale, e prenotazioni elencate con un avviso di saldo da pagare all'arrivo e un pulsante Verify",{"path":2497,"title":2498,"description":2499,"meta":2500},"/blog/it/hotel-front-desk-checklist-automation","Checklist reception hotel per Little Hotelier: 8 problemi da individuare prima dell'arrivo","Checklist quotidiana per la reception con Little Hotelier: 8 problemi da individuare prima dell'arrivo, dove vederli e come automatizzarne cinque.",{"date":2366,"category":2480,"tags":2501,"keywords":2505,"feature":2493,"cover":2512,"coverAlt":2513},[2463,2502,2503,2504,2424],"checklist","check-in","automation",[2506,2507,2508,2509,2510,2511],"checklist reception hotel","checklist check-in hotel","modello checklist reception hotel","checklist reception little hotelier","prenotazioni senza camera little hotelier","automazione reception hotel","/images/blog/demo/en/automated-checks-lifecycle.webp","Pagina Automated Checks di Hotelier Tools: come funzionano i controlli in quattro passaggi, un avviso Nothing runs any check yet che suggerisce Before they arrive e l'animazione The journey of a reservation con le sue cinque fasi",{"path":2401,"title":5,"description":2362,"meta":2515},{"date":2366,"category":2367,"tags":2516,"keywords":2517,"feature":2382,"cover":2383,"coverAlt":2384},[2369,2370,386,2371,2372],[2374,2375,2376,2377,2378,2379,2380,2381],{"path":2519,"title":2520,"description":2521,"meta":2522},"/blog/it/connect-chatgpt-to-little-hotelier","Come collegare ChatGPT a Little Hotelier (e 18 prompt per piccoli hotel)","Collega ChatGPT a Little Hotelier con developer mode e un'app MCP, verifica cosa consente il tuo piano e copia 18 prompt per arrivi, pagamenti e prezzi.",{"date":2366,"category":2367,"tags":2523,"keywords":2526,"feature":2382,"cover":2533,"coverAlt":2534},[2524,2369,2367,2525,2424],"chatgpt","prompts",[2527,2528,2529,2530,2531,2532],"collegare chatgpt a little hotelier","chatgpt connettore mcp","chatgpt mcp","prompt chatgpt per hotel","chatgpt gestione hotel","chatgpt developer mode mcp","/images/blog/demo/en/mcp-oauth-consent.webp","Pagina Authorize MCP access di Hotelier Tools che un assistente AI apre quando si collega, con l'avviso del token di 30 giorni e i pulsanti Deny e Allow access",{"path":2536,"title":2537,"description":2538,"meta":2539},"/blog/it/connect-claude-to-little-hotelier","Come collegare Claude a Little Hotelier (MCP, guida passo passo)","Collega Claude a Little Hotelier con un connettore personalizzato: incolla un URL, accedi e consenti l'accesso. Primi prompt, sicurezza e problemi comuni.",{"date":2366,"category":2367,"tags":2540,"keywords":2542,"feature":2382,"cover":2383,"coverAlt":2548,"featured":1040},[192,2369,2367,2541,2424],"connectors",[2543,2379,2544,2545,2546,2547],"collegare claude a little hotelier","connettori mcp claude","claude desktop mcp configurazione","connettore personalizzato claude","little hotelier ai","Guida alla configurazione MCP di Hotelier Tools con la spiegazione What is MCP? e la scheda Claude Desktop selezionata, che mostra i passaggi e lo snippet di configurazione con l'URL del server MCP",{"path":2550,"title":2551,"description":2552,"meta":2553},"/blog/it/booking-com-commission","Commissione Booking.com: che percentuale prende (e come vedere il netto reale in Little Hotelier)","Non esiste una percentuale unica: paghi quella del tuo contratto, più programmi e commissioni di pagamento. Su cosa si applica, IVA e netto reale.",{"date":2366,"category":2439,"tags":2554,"keywords":2558,"cover":2565,"coverAlt":2566},[2482,2555,2424,2556,2557],"commission","userscript","vat",[2559,2560,2561,2562,2563,2564],"commissione booking percentuale","commissione booking b&b","commissione booking affitti brevi","commissione booking iva","calcolatore commissione booking","commissione booking genius","/images/scripts/show-booking-commissions/to.png","Riepilogo di una prenotazione in Little Hotelier (interfaccia in spagnolo) con la commissione di Booking.com, la commissione di pagamento e il netto approssimativo aggiunti da uno script gratuito",{"path":2568,"title":2569,"description":2570,"meta":2571},"/blog/it/little-hotelier-cta-ctd-stop-sell","CTA, CTD, soggiorno minimo e stop sell: cosa significano in Little Hotelier","CTA blocca i check-in, CTD i check-out, il soggiorno minimo fissa la durata minima, lo stop sell chiude la vendita. Cosa significano e come impostarli.",{"date":2366,"category":2572,"tags":2573,"keywords":2578,"feature":2585,"cover":2586,"coverAlt":2587},"pricing",[2574,2575,2576,2577,2424],"restrictions","cta","ctd","stop sell",[2579,2580,2581,2582,2583,2584],"cta ctd hotel cosa significa","little hotelier cta ctd","closed to arrival significato","stop sell hotel cos'è","siteminder stop sell","soggiorno minimo hotel","dynamic-pricing","/images/blog/demo/en/price-recommendations.webp","Prezzi consigliati in Hotelier Tools per la camera Doble Estándar, dal 3 al 16 ottobre 2026: prezzo attuale e consigliato per notte, una colonna CTA / CTD con interruttori A e D, il soggiorno minimo, una colonna Channel e un pulsante Apply to Little Hotelier",{"path":2589,"title":2590,"description":2591,"meta":2592},"/blog/it/export-little-hotelier-reservations-excel","Esportare prenotazioni ed elenco ospiti da Little Hotelier in Excel (prima che i dati vengano mascherati)","Little Hotelier maschera i dati degli ospiti 180 giorni dopo il check-out. Esporta prenotazioni ed elenco ospiti in Excel o Sheets, a mano o in automatico.",{"date":2366,"category":2372,"tags":2593,"keywords":2598,"feature":2382,"cover":2605,"coverAlt":2606},[2594,2595,2596,2597,2424],"export","excel","google sheets","reports",[2599,2600,2601,2602,2603,2604],"esportare prenotazioni little hotelier in excel","little hotelier report","little hotelier esportare csv","elenco ospiti hotel excel","foglio prenotazioni hotel excel","little hotelier dati ospiti mascherati","/images/blog/demo/en/developer-portal.webp","Portale per sviluppatori di Hotelier Tools con schede per REST API e Swagger, MCP setup, API keys e LH methods, sopra un esempio di autenticazione con una chiave API",{"path":2608,"title":2609,"description":2610,"meta":2611},"/blog/it/little-hotelier-chrome-extensions","Estensioni Chrome per Little Hotelier: userscript gratuiti per lavorare più in fretta","Userscript gratuiti per Little Hotelier: prezzi nel calendario, tabelle più larghe, commissioni Booking.com stimate e fatture in un clic. Come installarli.",{"date":2366,"category":2439,"tags":2612,"keywords":2617,"cover":2624,"coverAlt":2625},[2613,2614,2615,2424,2616],"chrome extension","tampermonkey","userscripts","productivity",[2618,2619,2620,2621,2622,2623],"estensione chrome little hotelier","tampermonkey script","userscript chrome","little hotelier prezzi calendario","little hotelier tabelle a larghezza piena","little hotelier commissioni booking.com","/images/scripts/prices-display/to.png","Calendario di Little Hotelier (interfaccia in spagnolo) con il prezzo di ogni notte sotto ogni tipologia di camera, aggiunto dallo script Prices Display",{"path":2627,"title":2628,"description":2629,"meta":2630},"/blog/it/send-invoice-to-guest-at-checkout","Fattura ospite Booking: come inviarla automaticamente al check-out da Little Hotelier","Booking.com non fattura i tuoi ospiti: lo fai tu. Invia la fattura da Little Hotelier a mano o in automatico per email quando l'ospite fa il check-out.",{"date":2366,"category":2631,"tags":2632,"keywords":2635,"feature":2631,"cover":2643,"coverAlt":2644},"invoicing",[2633,2634,2482,2424,2504],"invoices","checkout",[2636,2637,2638,2639,2640,2641,2642],"fattura ospite booking","fattura booking cliente","come inviare fattura ospite booking","little hotelier fattura","fattura hotel al check-out","ospite chiede fattura hotel","fattura booking con iva","/images/blog/demo/en/invoice-at-checkout.webp","Pagina Invoice on leave in Hotelier Tools: l'attività Automatic invoicing at check-out eseguita ogni giorno alle 12:00, un intervallo di date con Search reservations e la tabella delle prenotazioni con un pulsante Auto-invoice per ogni soggiorno",{"path":2646,"title":2647,"description":2648,"meta":2649},"/blog/it/ine-hotel-occupancy-survey","Indagine INE sull'occupazione alberghiera in Spagna: come compilarla da Little Hotelier","Se l'INE ti seleziona, rispondere è obbligatorio (multe fino a 30.050 €). Cosa chiede l'indagine, come funziona IRIA e come compilarla da Little Hotelier.",{"date":2366,"category":2420,"tags":2650,"keywords":2653,"feature":2661,"cover":2662,"coverAlt":2663},[2651,2652,2420,2597,2424],"ine","spain",[2654,2655,2656,2657,2658,2659,2660],"encuesta ocupación hotelera ine","indagine ine hotel spagna","ine hotel occupancy survey","iria ine encuesta","encuesta ine obligatoria multa","encuesta ine hoteles","little hotelier ine","ine-reports","/images/blog/demo/en/ine-guest-origins-report.webp","Guest Origin Statistics (indagine INE HOT) in Hotelier Tools dal 27 settembre al 3 ottobre 2026: 8 arrivi, 24 pernottamenti, 3,4 ospiti al giorno e 3 con dati mancanti, sopra le schede Daily summary, By guest origin, Rooms, ADR by client e Data quality",{"path":2665,"title":2666,"description":2667,"meta":2668},"/blog/it/little-hotelier-integrations","Integrazioni Little Hotelier 2026: le migliori per contabilità, check-in, prezzi, messaggi e AI","Cosa si collega a Little Hotelier nel 2026: export per Xero e QuickBooks, check-in con Chekin e Duve, strumenti di prezzo, messaggi, AI e script gratuiti.",{"date":2366,"category":2372,"tags":2669,"keywords":2674,"feature":2382,"cover":2605,"coverAlt":2682},[2670,2671,2672,2673,2424],"integrations","app store","xero","chekin",[2675,2676,2677,2678,2679,2680,2681],"integrazioni little hotelier","little hotelier xero integrazione","little hotelier app store","little hotelier widget prenotazione","little hotelier plugin wordpress","little hotelier chekin","little hotelier zapier","Portale per sviluppatori in Hotelier Tools con schede per REST API & Swagger, configurazione MCP, chiavi API e metodi LH, e un riquadro Authentication con un esempio cURL che usa una chiave API segnaposto",{"path":2684,"title":2685,"description":2686,"meta":2687},"/blog/it/hotel-waitlist-sold-out-dates","Lista d'attesa hotel per date esaurite: come gestirla (e riempire subito le cancellazioni)","Tieni una lista di ospiti per le date piene e offri per prime le camere liberate. Metodo con foglio di calcolo, controllo automatico e modulo pubblico.",{"date":2366,"category":2688,"tags":2689,"keywords":2694,"feature":2690,"cover":2701,"coverAlt":2702},"guests",[2690,2691,2692,2424,2693],"waitlist","cancellations","direct booking","availability",[2695,2696,2697,2698,2699,2700],"lista d'attesa hotel","lista d'attesa hotel date esaurite","lista d'attesa b&b","riempire cancellazioni hotel","modulo lista d'attesa hotel","hotel completo lista d'attesa","/images/blog/demo/en/availability-waiting-list.webp","Pagina Availability queue di Hotelier Tools con History e Check the queue now, la scheda Checks on the queue che propone Check every night at 01:00 e il modulo Add a stay to watch con notti, camere richieste, tipologie di camera e dati dell'ospite",{"path":2704,"title":2705,"description":2706,"meta":2707},"/blog/it/hotel-do-not-rent-list","Lista nera ospiti: come gestirla in Little Hotelier nel rispetto della legge","Un hotel può tenere una lista nera degli ospiti a norma GDPR, se si attiene ai fatti. Cosa annotare, cosa evitare e come ricevere avvisi.",{"date":2366,"category":2480,"tags":2708,"keywords":2712,"feature":2493,"cover":2719,"coverAlt":2720},[2709,2710,2688,2711,2424],"do not rent list","gdpr","watchlist",[2713,2714,2715,2716,2717,2718],"lista nera ospiti","lista nera ospiti hotel","blacklist clienti hotel","lista nera ospiti gdpr","bloccare ospite booking.com","note ospiti little hotelier","/images/blog/demo/en/automated-checks-do-not-rebook-list.webp","Lista do-not-rebook in Hotelier Tools: la scheda del controllo notturno, il controllo di una prenotazione con una corrispondenza forte e il motivo oggettivo, e una voce con Edit, Deactivate e Delete",{"path":2722,"title":2723,"description":2724,"meta":2725},"/blog/it/little-hotelier-api","Little Hotelier ha un'API? La risposta 2026 e come estrarre i tuoi dati","Nessuna chiave API per prenotazioni e ospiti. Cosa offre SiteMinder ufficialmente e come leggere i tuoi dati di Little Hotelier via REST in pochi minuti.",{"date":2366,"category":2372,"tags":2726,"keywords":2730,"feature":2382,"cover":2738,"coverAlt":2739,"featured":1040},[2372,2727,2424,2728,2729],"rest","siteminder","developers",[2731,2732,2733,2734,2735,2736,2737],"little hotelier api","little hotelier api documentazione","little hotelier api key","siteminder api","siteminder exchange api","little hotelier rest api","little hotelier integrazioni","/images/blog/demo/en/rest-api-reference.webp","Pagina REST API reference in Hotelier Tools con l'URL di base, il download di openapi.json, il riquadro Quick authorize (campo Bearer token, Authorize Swagger, Use my session) e modelli di codice in cURL, JavaScript, Python e PowerShell",{"path":2741,"title":2742,"description":2743,"meta":2744},"/blog/it/little-hotelier-tips","Little Hotelier: tutorial con 20 trucchi e funzioni nascoste (2026)","20 trucchi per Little Hotelier: calendario più veloce, passkey, tariffa minima, notti isolate, link di prenotazione, audit log e script per i prezzi.",{"date":2366,"category":2439,"tags":2745,"keywords":2748,"feature":2756,"cover":2757,"coverAlt":2758},[2439,2746,2747,2615,2424],"how to","calendar",[2749,2750,2751,2752,2753,2754,2755],"little hotelier tutorial","little hotelier come funziona","little hotelier guida","little hotelier manuale","little hotelier trucchi","little hotelier funzioni nascoste","little hotelier calendario","dashboard","/images/scripts/full-width-reservation-table/to.png","Pagina Reservations di Little Hotelier (interfaccia in spagnolo) allargata a tutta la larghezza dello schermo dallo script Full Width Reservation Table: filtri di ricerca, il pulsante Buscar, 36 prenotazioni trovate e il link Exportar",{"path":2760,"title":2761,"description":2762,"meta":2763},"/blog/it/booking-com-guest-messages","Messaggi Booking.com agli ospiti: come gestirli senza stare sempre nell'extranet","Pulse, template, messaggi programmati e risposte automatiche, come riconoscere i messaggi falsi di Booking.com e un'unica inbox con WhatsApp ed email.",{"date":2366,"category":2688,"tags":2764,"keywords":2768,"feature":2776,"cover":2777,"coverAlt":2778},[2482,2765,2766,2767,2424],"guest messages","inbox","templates",[2769,2770,2771,2772,2773,2774,2775],"messaggi booking","messaggi booking non funzionano","booking messaggi automatici","template messaggi booking","messaggi extranet booking","messaggi booking truffa","messaggi booking su whatsapp","guest-inbox","/images/blog/demo/en/guest-inbox-ai-draft-availability.webp","Inbox ospiti di Hotelier Tools con i filtri WhatsApp, Email e Booking.com, un'email di un ospite che chiede di una camera doppia a settembre, il piano dell'AI in bozza con una risposta modificabile e il pannello dell'assistente privato",{"path":2780,"title":2781,"description":2782,"meta":2783},"/blog/it/dynamic-pricing-little-hotelier","Prezzi dinamici per piccoli hotel su Little Hotelier: concorrenti, eventi e regole","Prezzi dinamici su Little Hotelier: una routine settimanale, le opzioni native e prezzi consigliati con il motivo, applicati solo quando confermi.",{"date":2366,"category":2572,"tags":2784,"keywords":2788,"feature":2585,"cover":2586,"coverAlt":2795},[2785,2786,2787,2424,2572],"dynamic pricing","revenue management","competitor prices",[2789,2790,2791,2792,2793,2794],"prezzi dinamici hotel","tariffe dinamiche hotel","revenue management b&b","strumento prezzi dinamici hotel","little hotelier dynamic pricing","come fissare le tariffe delle camere","Pagina Price recommendations di Hotelier Tools per 14 notti: la tabella Doble Estándar con tariffa attuale, tariffa consigliata, variazione, mediana del mercato e quanto paga l'ospite a notte, e una barra Apply to Little Hotelier senza prezzi selezionati",{"path":2797,"title":2798,"description":2799,"meta":2800},"/blog/it/download-all-little-hotelier-invoices","Scaricare tutte le fatture di Little Hotelier in una volta (per il commercialista)","Little Hotelier mette in uno ZIP le fatture già emesse. Ecco come, come creare quelle mancanti e dare al commercialista uno ZIP e un CSV a trimestre.",{"date":2366,"category":2631,"tags":2801,"keywords":2805,"feature":2631,"cover":2812,"coverAlt":2813,"featured":1040},[2633,2802,2424,2803,2804],"accounting","quarterly tax","zip",[2806,2807,2808,2809,2810,2811],"scaricare tutte le fatture little hotelier","scaricare fatture little hotelier","esportare fatture little hotelier","little hotelier fatture pdf","fatture trimestrali per il commercialista","little hotelier xero","/images/blog/demo/en/invoices-by-quarter.webp","Pagina Invoices di Hotelier Tools con 66 fatture in totale, il quarto e il terzo trimestre 2026 ciascuno con i pulsanti Preview CSV e ZIP, e settembre 2026 aperto come tabella di numeri di fattura, ospiti, codici fiscali, date di check-out e totali",{"path":2815,"title":2816,"description":2817,"meta":2818},"/blog/it/what-is-mcp-server-hotels","Server MCP: cosa sono e come usarli in hotel (guida semplice e quali PMS ce l'hanno)","Un server MCP permette a Claude o ChatGPT di leggere e usare il software del tuo hotel. Guida semplice, sicurezza e quali PMS ce l'hanno a ottobre 2026.",{"date":2366,"category":2367,"tags":2819,"keywords":2820,"feature":2382,"cover":2383,"coverAlt":2828,"featured":1040},[2369,2367,192,2524,2441],[2821,2822,2823,2824,2825,2379,2826,2827],"server mcp cosa sono","mcp cos'è","mcp claude cos'è","server mcp per hotel","mcp pms hotel","apaleo mcp server","mews mcp server","Guida alla configurazione MCP in Hotelier Tools con una spiegazione What is MCP? e le schede Client configuration per Claude Desktop, VS Code, Cursor e Custom / SDK, con la configurazione di Claude Desktop e l'indirizzo del server",{"path":2830,"title":2831,"description":2832,"meta":2833},"/blog/it/ses-hospedajes-little-hotelier","SES Hospedajes con Little Hotelier: come registrare gli ospiti (partes de viajeros) senza doppio lavoro","Il registro ospiti SES.Hospedajes in Spagna spiegato: chi, quali dati, le scadenze di 24 ore, come inviarlo e come può inviarlo per te Little Hotelier.",{"date":2366,"category":2420,"tags":2834,"keywords":2836,"cover":2432,"coverAlt":2843},[2835,2652,2420,2422,2424],"ses hospedajes",[2835,2837,2838,2839,2840,2841,2842],"ses hospedajes cos'è","ses hospedajes little hotelier","parte de viajeros","ses hospedajes dati obbligatori","ses hospedajes servicio web","registrazione ospiti spagna","Impostazioni When they arrive in Hotelier Tools con i controlli ID / passport (police register), Physical room assignment e Address and origin validation attivi, ciascuno con ciò che può e non può fare",{"path":2845,"title":2846,"description":2847,"meta":2848},"/blog/it/whatsapp-little-hotelier","WhatsApp Business per hotel con Little Hotelier: Messaging hub, app e altre opzioni","Il Messaging hub di Little Hotelier usa la WhatsApp Business API ufficiale. Confrontalo con l'app WhatsApp Business gratuita e un'inbox condivisa.",{"date":2366,"category":2688,"tags":2849,"keywords":2853,"feature":2776,"cover":2861,"coverAlt":2862},[2850,2851,2424,2852,2766],"whatsapp","messaging","guest engagement",[2854,2855,2856,2857,2858,2859,2860],"whatsapp business per hotel","little hotelier whatsapp","whatsapp per hotel","whatsapp business api hotel","whatsapp business app b&b","template whatsapp check-in","little hotelier messaging hub","/images/blog/demo/en/guest-inbox-ai-plan-late-arrival.webp","Inbox ospiti di Hotelier Tools con una conversazione WhatsApp di Ingrid Kowalski su un arrivo in ritardo (identità verificata, prenotazione collegata), un piano AI in bozza con una risposta modificabile e il pannello privato Assistant",1791141234744]