[{"data":1,"prerenderedAt":2829},["ShallowReactive",2],{"blog-little-hotelier-mcp-claude-code-cursor-vscode-id":3,"blog-langs-little-hotelier-mcp-claude-code-cursor-vscode":2407,"blog-list-id":2416},{"id":4,"title":5,"body":6,"description":2364,"extension":2365,"meta":2366,"navigation":1042,"path":2403,"seo":2404,"stem":2405,"__hash__":2406},"content/blog/id/little-hotelier-mcp-claude-code-cursor-vscode.md","Cara memakai data Little Hotelier di Claude Code, Cursor, dan VS Code (MCP)",{"type":7,"value":8,"toc":2346},"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,2226,2230,2306,2309,2313,2342],[10,11,12,13,17,18,21],"p",{},"Tambahkan satu MCP server jarak jauh, ",[14,15,16],"code",{},"https://dashboard.hotelier.tools/api/mcp",", dengan API key Hotelier Tools, dan Claude Code, Cursor, VS Code (mode agen Copilot), Windsurf, atau Gemini CLI dapat membaca reservasi, tarif, dan invoice Little Hotelier Anda sambil menulis kode untuk Anda. Di Claude Code cukup satu perintah: ",[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],{},"Di bawah ini ada konfigurasi persis untuk setiap tool (diperiksa terhadap dokumentasi masing-masing vendor pada Oktober 2026), tiga hal yang layak dibuat, dan kapan sebaiknya memanggil REST API secara langsung.",[26,27,29],"h2",{"id":28},"sebelum-mulai-buat-api-key","Sebelum mulai: buat API key",[10,31,32,33,40,41],{},"Little Hotelier tidak menerbitkan MCP server, dan dokumentasi API mitra SiteMinder sendiri menyebut data ketersediaan dan tarif ",[34,35,39],"a",{"href":36,"rel":37},"https://developer.siteminder.com/smx-api/reference/availability-and-rates/publishers",[38],"nofollow","tidak bisa diperoleh dari Little Hotelier",". Hotelier Tools menyediakan MCP server sekaligus REST API, memakai login Little Hotelier milik properti Anda sendiri. Layanan ini tidak berafiliasi dengan atau didukung oleh SiteMinder maupun Little Hotelier. Latar belakangnya: ",[34,42,44],{"href":43},"/blog/little-hotelier-api","apakah Little Hotelier punya API?",[46,47,48,61,71,81],"ol",{},[49,50,51,52,56,57,60],"li",{},"Di Hotelier Tools, hubungkan Little Hotelier di ",[53,54,55],"strong",{},"Credentials"," (",[14,58,59],{},"/credentials",") jika belum.",[49,62,63,64,56,67,70],{},"Buka ",[53,65,66],{},"Developer → API & MCP → API Keys",[14,68,69],{},"/developer/api-keys",").",[49,72,73,74,77,78,21],{},"Ketik nama yang menunjukkan di mana key akan dipakai, misalnya ",[14,75,76],{},"cursor-laptop",", lalu tekan ",[53,79,80],{},"Generate key",[49,82,83,84,21],{},"Salin segera: \"Copy this key now — it will not be shown again.\" Key diawali dengan ",[14,85,86],{},"htk_",[88,89],"screenshot",{"alt":90,"caption":91,"path":69,"src":92},"Halaman API keys di Hotelier Tools: formulir Generate a new key dengan kolom nama dan tombol Generate key, satu key aktif (MCP internal (chat), disamarkan) dengan tombol Revoke, dan catatan Good security practice","Satu key per tool memudahkan Anda mencabut hanya yang tidak lagi dipakai.","/images/blog/demo/en/api-keys.webp",[10,94,95],{},"Sebuah key memiliki izin yang sama dengan akun Hotelier Tools Anda, pada satu properti tempat Anda membuatnya. Anda bisa memiliki hingga 10 key.",[10,97,98,101,102,105],{},[53,99,100],{},"Jauhkan key dari file Anda."," Simpan di variabel lingkungan bernama ",[14,103,104],{},"HT_API_KEY"," dan rujuk dari konfigurasi:",[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   # atau ~/.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","   # atau ~/.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],{},"Buka terminal baru (dan mulai ulang editor Anda) agar variabelnya terbaca.",[26,161,163],{"id":162},"cara-menambahkan-mcp-server-ke-claude-code-cursor-vs-code-windsurf-dan-gemini-cli","Cara menambahkan MCP server ke Claude Code, Cursor, VS Code, Windsurf, dan Gemini CLI",[10,165,166],{},"Setiap tool menyimpan tiga fakta yang sama (alamat, transport, key) dalam file yang sedikit berbeda. Pilih yang Anda pakai.",[168,169,171],"h3",{"id":170},"claude-code","Claude Code",[10,173,174,175,180],{},"Claude Code punya perintah bawaan untuk server jarak jauh (",[34,176,179],{"href":177,"rel":178},"https://code.claude.com/docs/en/mcp",[38],"dokumentasi 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],{},"Lalu jalankan ",[14,221,192],{}," dan ketik ",[14,224,225],{},"/mcp",". Hotelier Tools seharusnya tampil sebagai ",[53,228,229],{},"connected","; status ",[14,232,233],{},"failed"," dengan 401 berarti key salah.",[236,237,238,256],"ul",{},[49,239,240,243,244,247,248,251,252,255],{},[53,241,242],{},"Scope."," Secara default server disimpan hanya untuk folder saat ini. Tambahkan ",[14,245,246],{},"--scope user"," setelah nama untuk memakainya di setiap proyek, atau ",[14,249,250],{},"--scope project"," untuk menulis ",[14,253,254],{},".mcp.json"," bersama.",[49,257,258,261,262,265,266,268],{},[53,259,260],{},"Masuk, bukan memakai key."," Jalankan perintah tanpa ",[14,263,264],{},"--header",", lalu di dalam Claude Code ketik ",[14,267,225],{}," dan lakukan autentikasi di browser. Jika Anda sudah menghubungkan Hotelier Tools sebagai connector di claude.ai, Claude Code dapat mengambilnya saat Anda masuk dengan akun Claude yang sama.",[10,270,271,272,274],{},"Untuk proyek yang Anda bagikan dengan rekan atau simpan di Git, taruh server di ",[14,273,254],{}," dan biarkan setiap orang memasukkan key-nya sendiri:",[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],{},"Baris ",[14,374,375],{},"\"type\": \"http\""," wajib ada: Claude Code menganggap entri dengan ",[14,378,379],{},"url"," tetapi tanpa ",[14,382,383],{},"type"," sebagai kesalahan konfigurasi.",[168,386,388],{"id":387},"cursor","Cursor",[10,390,391,392,395,396,399,400,180],{},"Cursor membaca ",[14,393,394],{},"~/.cursor/mcp.json"," untuk semua proyek, atau ",[14,397,398],{},".cursor/mcp.json"," di dalam satu proyek (",[34,401,404],{"href":402,"rel":403},"https://cursor.com/docs/context/mcp",[38],"dokumentasi 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],{},"Simpan, lalu pastikan server aktif di pengaturan MCP Cursor (versi terbaru menampilkan daftar server di bawah ",[53,467,468],{},"Customize"," pada sidebar). Bertanyalah di chat ",[53,471,472],{},"Agent",". Cursor secara default meminta persetujuan sebelum menjalankan sebuah tool; biarkan begitu untuk server ini. Jika ",[14,475,476],{},"headers"," dihilangkan, Cursor akan menawarkan masuk lewat browser.",[168,479,481],{"id":480},"vs-code-dengan-github-copilot","VS Code dengan GitHub Copilot",[10,483,484,485,488,489,492,493,495,496,501,502,505],{},"VS Code memakai ",[14,486,487],{},".vscode/mcp.json",", dengan ",[14,490,491],{},"servers"," sebagai kunci teratas dan ",[14,494,375],{}," yang wajib (",[34,497,500],{"href":498,"rel":499},"https://code.visualstudio.com/docs/agents/reference/mcp-configuration",[38],"dokumentasi VS Code","). Fitur ",[14,503,504],{},"inputs","-nya meminta key sekali dan menyimpannya di penyimpanan aman VS Code, sehingga tidak pernah ada di dalam file:",[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],{},"Buka Copilot Chat, pindah ke mode ",[53,654,472],{},", dan gunakan ",[53,657,658],{},"Configure Tools"," untuk melihat tool Hotelier Tools. VS Code mungkin meminta Anda mempercayai server saat pertama kali dijalankan. Untuk semua workspace, jalankan ",[53,661,662],{},"MCP: Open User Configuration"," dan tempel blok yang sama di sana. VS Code juga mendukung masuk lewat browser jika Anda menghilangkan ",[14,665,476],{},[88,667],{"alt":668,"caption":669,"path":670,"src":671,"height":672,"width":673},"Tab VS Code / GitHub Copilot pada halaman penyiapan MCP Hotelier Tools: cuplikan .vscode/mcp.json dengan servers, hotelier-tools, type http, URL /api/mcp milik demo, dan header Authorization dengan placeholder htk_YOUR_API_KEY, lalu Turn on Agent mode in Copilot Chat","Halaman MCP Setup menyediakan cuplikan siap pakai untuk setiap klien. Demo menampilkan alamatnya sendiri; alamat Anda adalah dashboard.hotelier.tools.","/developer/mcp-setup","/images/blog/demo/en/mcp-config-vscode-copilot.webp",446,1036,[168,675,677],{"id":676},"windsurf-dan-gemini-cli","Windsurf dan Gemini CLI",[10,679,680,683,684,687,688,691,692,180],{},[53,681,682],{},"Windsurf"," (yang dokumentasinya kini berada di bawah Devin) membaca ",[14,685,686],{},"~/.codeium/windsurf/mcp_config.json"," dan memakai ",[14,689,690],{},"serverUrl"," untuk server jarak jauh (",[34,693,696],{"href":694,"rel":695},"https://docs.devin.ai/windsurf/plugins/cascade/mcp",[38],"dokumentasi",[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 membatasi Cascade hingga 100 tool secara total, dan Hotelier Tools menawarkan lebih dari 100, jadi Anda mungkin perlu mematikan tool yang tidak dipakai di panel MCP.",[10,759,760,763,764,767,768,771,772,775,776,778,779,180],{},[53,761,762],{},"Gemini CLI"," membaca ",[14,765,766],{},"~/.gemini/settings.json"," (atau ",[14,769,770],{},".gemini/settings.json"," di sebuah proyek) dan memakai ",[14,773,774],{},"httpUrl"," untuk jenis server ini; ",[14,777,379],{}," berarti transport SSE yang lebih lama, yang tidak dilayani Hotelier Tools (",[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],{},"Atau dari terminal: ",[14,846,847],{},"gemini mcp add --transport http --header \"Authorization: Bearer htk_YOUR_API_KEY\" hotelier-tools https://dashboard.hotelier.tools/api/mcp",". Ketik ",[14,850,225],{}," di dalam Gemini CLI untuk memeriksanya.",[10,853,854],{},"Kedua konfigurasi ini mengikuti dokumentasi masing-masing vendor; kami belum mengujinya di setiap versi.",[856,857,858,877],"table",{},[859,860,861],"thead",{},[862,863,864,868,871,874],"tr",{},[865,866,867],"th",{},"Tool",[865,869,870],{},"File konfigurasi",[865,872,873],{},"Kunci teratas",[865,875,876],{},"Kunci 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},"tiga-hal-yang-layak-dibuat","Tiga hal yang layak dibuat",[10,975,976,977,981,982,986],{},"Triknya adalah membiarkan agen memakai MCP untuk ",[978,979,980],"em",{},"melihat"," data asli Anda, lalu menulis kode yang memanggil ",[34,983,985],{"href":984},"/tools/bot/api-mcp","REST API"," agar hasilnya berjalan setiap bulan tanpa AI.",[168,988,990],{"id":989},"laporan-okupansi-bulanan","Laporan okupansi bulanan",[10,992,993],{},"Minta Claude Code (atau agen Cursor) di folder kosong:",[995,996,997],"prompt",{"label":171},[10,998,999,1000,1004],{},"Pakai MCP server hotelier-tools untuk melihat tipe kamar saya dan reservasi bulan lalu. Lalu tulis skrip Node.js yang memanggil REST API Hotelier Tools (spesifikasi: ",[34,1001,1002],{"href":1002,"rel":1003},"https://dashboard.hotelier.tools/api/v1/openapi.json",[38],") dengan key di HT_API_KEY, dan untuk bulan apa pun yang saya berikan, cetak okupansi dan average daily rate per tipe kamar lalu simpan ke file CSV.",[10,1006,1007],{},"Skrip yang baik dimulai seperti ini. Skrip mengambil tipe kamar dan setiap reservasi yang beririsan dengan bulan tersebut, lalu menyimpan jawaban mentahnya agar Anda bisa memeriksa kolom-kolomnya sebelum menghitung:",[107,1009,1014],{"className":1010,"code":1011,"filename":1012,"language":1013,"meta":113,"style":113},"language-js shiki shiki-themes github-light github-dark","// Cara pakai: node fetch-month.mjs 2026-09   (butuh HT_API_KEY di environment Anda)\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},"// Cara pakai: node fetch-month.mjs 2026-09   (butuh HT_API_KEY di environment Anda)\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],{},"Spesifikasi API sendiri menyebut objek reservasi berasal dari Little Hotelier dan \"shape may vary\", jadi biarkan agen membaca file yang tersimpan sebelum menghitung apa pun. ",[14,1555,1556],{},"/room-types"," memberi ",[14,1559,1560],{},"totalRooms"," per tipe, yang merupakan separuh lainnya dari perhitungan okupansi.",[168,1563,1565],{"id":1564},"sinkronisasi-google-sheets","Sinkronisasi Google Sheets",[10,1567,1568,1569,1572],{},"Untuk sheet yang mendaftar kedatangan 30 hari ke depan dan diperbarui setiap pagi, buka spreadsheet Anda, masuk ke ",[53,1570,1571],{},"Extensions → Apps Script",", lalu tempel:",[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],{},"Simpan key di ",[53,2064,2065],{},"Project Settings → Script properties"," sebagai ",[14,2068,104],{},", jalankan sekali untuk memberi akses, lalu tambahkan trigger harian berbasis waktu di ",[53,2071,2072],{},"Triggers",". ",[14,2075,2076],{},"/reservations"," mengembalikan maksimal 100 reservasi per panggilan, difilter berdasarkan tanggal check-in, jadi bagi bulan yang padat menjadi per minggu. Ingat bahwa sheet kini berisi nama tamu: bagikan dengan hati-hati.",[168,2079,2081],{"id":2080},"dashboard-kustom-kecil","Dashboard kustom kecil",[995,2083,2084],{"label":388},[10,2085,2086],{},"Buat aplikasi web Node.js kecil yang menampilkan okupansi malam ini, kedatangan dan keberangkatan hari ini, serta reservasi dengan saldo belum dibayar, memakai REST API Hotelier Tools. Simpan HT_API_KEY hanya di server; browser harus memanggil server saya, tidak pernah memanggil API secara langsung. Simpan jawaban di cache selama lima menit.",[10,2088,2089],{},"Dua aturan membuatnya aman: key tetap di server (siapa pun yang membuka halaman bisa membaca key di kode browser), dan Anda memakai cache, karena API mengizinkan 100 permintaan per menit per alamat IP.",[26,2091,2093],{"id":2092},"mcp-atau-rest-api-mana-yang-sebaiknya-dipakai","MCP atau REST API: mana yang sebaiknya dipakai?",[856,2095,2096,2107],{},[859,2097,2098],{},[862,2099,2100,2102,2105],{},[865,2101],{},[865,2103,2104],{},"MCP server",[865,2106,985],{},[878,2108,2109,2120,2134,2149],{},[862,2110,2111,2114,2117],{},[883,2112,2113],{},"Paling cocok untuk",[883,2115,2116],{},"Bertanya, membiarkan agen menjelajah sambil menulis kode",[883,2118,2119],{},"Skrip, Sheets, dashboard yang berjalan terjadwal",[862,2121,2122,2125,2129],{},[883,2123,2124],{},"Alamat",[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],{},"Autentikasi",[883,2140,2141],{},"API key atau masuk lewat browser",[883,2143,2144,2145,2148],{},"API key (",[14,2146,2147],{},"Authorization: Bearer htk_…",")",[862,2150,2151,2154,2159],{},[883,2152,2153],{},"Dokumentasi",[883,2155,2156,2157,2148],{},"Halaman MCP Setup (",[14,2158,670],{},[883,2160,2161,2162,2148],{},"Explorer Swagger (",[14,2163,2164],{},"/developer/rest-api",[10,2166,2167,2168,21],{},"Keduanya memakai key dan izin yang sama. Panduan REST ada di ",[34,2169,2170],{"href":43},"API Little Hotelier",[26,2172,2174],{"id":2173},"tool-baca-vs-tulis-jaga-agen-tetap-terkendali","Tool baca vs tulis: jaga agen tetap terkendali",[10,2176,2177],{},"Agen pemrograman pandai menjalankan tool dengan cepat, dan itulah alasan mengapa Anda perlu memperlambatnya di sini.",[236,2179,2180,2186,2192,2210],{},[49,2181,2182,2185],{},[53,2183,2184],{},"Operasi tulis berjalan begitu agen memanggilnya."," Di luar dashboard Hotelier Tools tidak ada kartu persetujuan. Mengubah reservasi, mencatat pembayaran, menerapkan harga, atau mengatur stop sell terjadi begitu tool-nya berjalan. Biarkan pengaturan \"ask before running tools\" di editor Anda aktif, dan jangan pakai mode auto-run dengan server ini.",[49,2187,2188,2191],{},[53,2189,2190],{},"Tindakan yang tidak bisa dibatalkan tetap diblokir."," Delapan tool (mengirim invoice ke tamu lewat email, refund, mengajukan survei INE, undangan tim, mengirim tautan tamu lewat email, menjawab pertanyaan Booking.com, dan pengecekan waiting list yang mengirim pesan ke tamu) hanya tersedia di dashboard.",[49,2193,2194,2197,2198,2201,2202,2205,2206,2209],{},[53,2195,2196],{},"Perubahan reservasi dilakukan dua langkah."," ",[14,2199,2200],{},"propose_reservation_changes"," menampilkan sebelum/sesudah; ",[14,2203,2204],{},"apply_reservation_changes"," memerlukan ",[14,2207,2208],{},"confirmed: true",". Baca usulannya.",[49,2211,2212,2215,2216,2219,2220,2223,2224,21],{},[53,2213,2214],{},"Jangan pernah meng-commit key."," Pakai rujukan bergaya ",[14,2217,2218],{},"${HT_API_KEY}",", tambahkan file konfigurasi lokal ke ",[14,2221,2222],{},".gitignore",", dan cabut key yang bocor di ",[14,2225,69],{},[26,2227,2229],{"id":2228},"pemecahan-masalah-server-tidak-muncul","Pemecahan masalah \"server tidak muncul\"",[236,2231,2232,2238,2246,2257,2263,2271,2287,2296],{},[49,2233,2234,2237],{},[53,2235,2236],{},"Tidak ada yang muncul setelah mengedit konfigurasi:"," mulai ulang editor atau CLI. Sebagian besar tool membaca konfigurasi MCP saat dijalankan.",[49,2239,2240,2243,2244,21],{},[53,2241,2242],{},"Claude Code atau VS Code mengabaikan server:"," periksa ",[14,2245,375],{},[49,2247,2248,2251,2252,2254,2255,21],{},[53,2249,2250],{},"Gemini CLI terhubung tetapi gagal:"," gunakan ",[14,2253,774],{},", bukan ",[14,2256,379],{},[49,2258,2259,2262],{},[53,2260,2261],{},"401:"," key salah atau sudah dicabut, atau variabel lingkungan belum diatur di terminal tersebut.",[49,2264,2265,2268,2269,21],{},[53,2266,2267],{},"400 \"No Little Hotelier credentials configured\":"," hubungkan Little Hotelier di ",[14,2270,59],{},[49,2272,2273,2280,2281,2283,2284,21],{},[53,2274,2275,2276,2279],{},"423 ",[14,2277,2278],{},"lh_frozen",":"," login Little Hotelier dijeda setelah gagal masuk (sering karena kata sandi kedaluwarsa). Simpan kata sandi baru di ",[53,2282,55],{}," atau tekan ",[53,2285,2286],{},"Check now & resume",[49,2288,2289,2292,2293,21],{},[53,2290,2291],{},"429:"," terlalu banyak permintaan; tunggu sesuai waktu di ",[14,2294,2295],{},"Retry-After",[49,2297,2298,2301,2302,2305],{},[53,2299,2300],{},"Pemisah baris dengan backslash gagal di Windows:"," PowerShell tidak memakai ",[14,2303,2304],{},"\\"," untuk melanjutkan baris. Tempel perintah dalam satu baris, seperti ditunjukkan di atas.",[2307,2308],"demo-cta",{"path":670},[26,2310,2312],{"id":2311},"langkah-berikutnya","Langkah berikutnya",[236,2314,2315,2328,2335],{},[49,2316,2317,2318,2322,2323,2327],{},"Bukan developer? ",[34,2319,2321],{"href":2320},"/blog/connect-claude-to-little-hotelier","Hubungkan Claude"," atau ",[34,2324,2326],{"href":2325},"/blog/connect-chatgpt-to-little-hotelier","ChatGPT"," lewat browser saja.",[49,2329,2330,2331,21],{},"Baru mengenal idenya? Baca ",[34,2332,2334],{"href":2333},"/blog/what-is-mcp-server-hotels","apa itu MCP server",[49,2336,2337,2338,21],{},"Ingin spreadsheet tanpa kode? Lihat ",[34,2339,2341],{"href":2340},"/blog/export-little-hotelier-reservations-excel","mengekspor reservasi ke Excel",[2343,2344,2345],"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":2347},[2348,2349,2355,2360,2361,2362,2363],{"id":28,"depth":289,"text":29},{"id":162,"depth":289,"text":163,"children":2350},[2351,2352,2353,2354],{"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":2356},[2357,2358,2359],{"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":2228,"depth":289,"text":2229},{"id":2311,"depth":289,"text":2312},"Pasang MCP server Hotelier Tools di Claude Code, Cursor, VS Code, Windsurf, atau Gemini CLI, lalu buat laporan okupansi, sync ke Sheets, atau dashboard.","md",{"seoTitle":2367,"date":2368,"category":2369,"tags":2370,"keywords":2375,"feature":2384,"demoPath":670,"cover":2385,"coverAlt":2386,"faq":2387},"Little Hotelier MCP di Claude Code, Cursor, VS Code","2026-10-03","ai",[2371,2372,387,2373,2374],"mcp","claude code","vs code","api",[2376,2377,2378,2379,2380,2381,2382,2383],"claude code adalah","claude code mcp setup","cursor mcp.json","vscode mcp.json","little hotelier mcp","mcp server adalah","gemini cli mcp","windsurf mcp config","api-mcp","/images/blog/demo/en/mcp-setup.webp","Panduan setup MCP di Hotelier Tools: penjelasan What is MCP? dan tab Client configuration untuk Claude Desktop, VS Code, Cursor, dan Custom / SDK, dengan Claude Desktop terpilih beserta cuplikan claude_desktop_config.json",[2388,2391,2394,2397,2400],{"q":2389,"a":2390},"Apa perintah claude mcp add untuk Little Hotelier?","Jalankan: claude mcp add --transport http hotelier-tools https://dashboard.hotelier.tools/api/mcp --header \"Authorization: Bearer htk_YOUR_API_KEY\". Ganti key dengan yang dari Developer, API Keys di Hotelier Tools, lalu periksa dengan /mcp di dalam Claude Code.",{"q":2392,"a":2393},"Di mana mcp.json berada di Cursor dan VS Code?","Cursor membaca ~/.cursor/mcp.json untuk semua proyek dan .cursor/mcp.json di dalam sebuah proyek. VS Code membaca .vscode/mcp.json di workspace, dan file tingkat pengguna yang Anda buka dengan perintah MCP: Open User Configuration. VS Code memakai kunci servers, bukan mcpServers.",{"q":2395,"a":2396},"Apakah saya harus seorang developer untuk memakai Claude Code dengan data hotel saya?","Tidak. Anda memasang Claude Code, menempel satu perintah, lalu bertanya dengan kata-kata biasa. Sebaiknya Anda tahu ke mana file Anda disimpan dan cara menjalankan skrip, tetapi Claude Code bisa menjelaskan setiap langkah saat bekerja.",{"q":2398,"a":2399},"Bisakah saya masuk (sign in) tanpa memakai API key?","Bisa, di klien yang mendukung OAuth. Tambahkan URL server tanpa header, lalu masuk ketika klien memintanya: di Claude Code jalankan /mcp dan pilih untuk melakukan autentikasi. Sesi masuk berlaku 30 hari. Key lebih baik untuk skrip yang berjalan tanpa pengawasan.",{"q":2401,"a":2402},"Apakah ini API resmi Little Hotelier atau SiteMinder?","Bukan. Hotelier Tools independen dan tidak berafiliasi dengan atau didukung oleh SiteMinder maupun Little Hotelier. Layanan ini terhubung dengan login Little Hotelier milik properti Anda sendiri dan menawarkan REST API dan MCP server miliknya sendiri.","/blog/id/little-hotelier-mcp-claude-code-cursor-vscode",{"title":5,"description":2364},"blog/id/little-hotelier-mcp-claude-code-cursor-vscode","01QpT6p1iMqYlrFIthrGMzQ6prg_vVxIAhY9NWT662s",[2408,2409,2410,2411,2412,2413,2414,2415,865],"de","en-gb","en","es","fr","id","it","pt",[2417,2437,2458,2478,2497,2501,2522,2539,2553,2572,2594,2612,2629,2648,2668,2687,2705,2723,2742,2755,2773,2791,2810],{"path":2418,"title":2419,"description":2420,"meta":2421},"/blog/id/ai-assistant-hotel-front-desk","AI untuk hotel: apa yang aman dikerjakan asisten AI di front desk (dengan persetujuan)","Asisten AI bisa mencari reservasi, menyusun balasan tamu, dan menyiapkan perubahan di hotel kecil. Apa yang aman dan kenapa Anda menyetujui tiap perubahan.",{"date":2368,"category":2369,"tags":2422,"keywords":2427,"feature":2434,"cover":2435,"coverAlt":2436},[2369,2423,2424,2425,2426],"ai assistant","front desk","approvals","little hotelier",[2428,2429,2430,2431,2432,2433],"ai untuk hotel","ai front desk hotel","asisten ai hotel","ai resepsionis hotel","ai agent untuk manajemen hotel","aplikasi ai untuk pemilik hotel","ai-assistant","/images/blog/demo/en/ai-chat-start.webp","Layar awal asisten AI Hotelier Tools yang menyatakan bahwa setiap perubahan data selalu meminta konfirmasi terlebih dahulu, lengkap dengan contoh pertanyaan dan riwayat chat di sebelah kiri",{"path":2438,"title":2439,"description":2440,"meta":2441},"/blog/id/little-hotelier-alternatives","Alternatif Little Hotelier 2026: perbandingan jujur dengan Cloudbeds, Mews, Beds24, Lodgify, Smoobu, dan Hostaway","Cloudbeds, Mews, Beds24, Lodgify, Smoobu, atau Hostaway? Cocok untuk siapa, cara penagihan, akses API, dan kapan tetap di Little Hotelier lebih masuk akal.",{"date":2368,"category":2442,"tags":2443,"keywords":2448,"cover":2456,"coverAlt":2457},"tips",[2444,2445,2446,2426,2447],"pms","comparison","alternatives","cloudbeds",[2449,2450,2451,2452,2453,2454,2455],"alternatif little hotelier","little hotelier vs cloudbeds","little hotelier harga","little hotelier vs siteminder","little hotelier adalah","aplikasi manajemen hotel gratis","pms hotel apa saja","/images/blog/demo/en/dashboard-overview.webp","Dashboard beranda Hotelier Tools untuk properti demo Hotel Demo Sol: kartu Open AI chat untuk membuka chat AI, pemberitahuan bahwa dua channel pesan tamu perlu perhatian, dan kotak status untuk Little Hotelier, Booking.com, pengetahuan AI, dan kota acuan harga",{"path":2459,"title":2460,"description":2461,"meta":2462},"/blog/id/download-all-little-hotelier-invoices","Cara download semua invoice Little Hotelier sekaligus (untuk laporan pajak per kuartal)","Little Hotelier bisa meng-ZIP invoice yang sudah ada. Begini caranya, plus membuat yang belum ada dan mengirim satu ZIP dan CSV per kuartal ke akuntan.",{"date":2368,"category":2463,"tags":2464,"keywords":2469,"feature":2463,"cover":2476,"coverAlt":2477,"featured":1042},"invoicing",[2465,2466,2426,2467,2468],"invoices","accounting","quarterly tax","zip",[2470,2471,2472,2473,2474,2475],"download semua invoice little hotelier","invoice little hotelier","laporan invoice little hotelier","cara download invoice","export invoice little hotelier","little hotelier xero","/images/blog/demo/en/invoices-by-quarter.webp","Halaman Invoices di Hotelier Tools dengan total 66 invoice, Q4 dan Q3 2026 masing-masing dengan tombol Preview CSV dan ZIP, serta September 2026 terbuka sebagai tabel nomor invoice, tamu, tax ID, tanggal check-out, dan total",{"path":2479,"title":2480,"description":2481,"meta":2482},"/blog/id/send-invoice-to-guest-at-checkout","Cara kirim invoice ke tamu otomatis saat check-out di Little Hotelier","Booking.com tidak menerbitkan invoice untuk tamu, Anda yang harus. Kirim dari Little Hotelier secara manual, atau otomatis lewat email saat tamu check-out.",{"date":2368,"category":2463,"tags":2483,"keywords":2487,"feature":2463,"cover":2495,"coverAlt":2496},[2465,2484,2485,2426,2486],"checkout","booking.com","automation",[2488,2489,2490,2491,2492,2493,2494],"tamu minta invoice hotel","guest invoice booking com","kirim invoice ke tamu","invoice hotel adalah","little hotelier invoice","send invoice to guest little hotelier","request invoice booking com","/images/blog/demo/en/invoice-at-checkout.webp","Halaman Invoice on leave di Hotelier Tools: tugas Automatic invoicing at check-out yang berjalan setiap hari pukul 12:00, rentang tanggal dengan Search reservations, dan tabel reservasi dengan tombol Auto-invoice untuk setiap masa inap",{"path":2403,"title":5,"description":2364,"meta":2498},{"date":2368,"category":2369,"tags":2499,"keywords":2500,"feature":2384,"cover":2385,"coverAlt":2386},[2371,2372,387,2373,2374],[2376,2377,2378,2379,2380,2381,2382,2383],{"path":2502,"title":2503,"description":2504,"meta":2505},"/blog/id/whatsapp-little-hotelier","Cara memakai WhatsApp dengan Little Hotelier (Messaging hub, WhatsApp Business, dan opsi lain)","Messaging hub Little Hotelier memakai WhatsApp Business API resmi. Bandingkan dengan aplikasi WhatsApp Business gratis dan inbox bersama, plus template.",{"date":2368,"category":2506,"tags":2507,"keywords":2512,"feature":2519,"cover":2520,"coverAlt":2521},"guests",[2508,2509,2426,2510,2511],"whatsapp","messaging","guest engagement","inbox",[2513,2514,2515,2516,2517,2518],"whatsapp untuk hotel","little hotelier whatsapp","whatsapp business api hotel","aplikasi whatsapp business hotel","template whatsapp check-in hotel","little hotelier messaging hub","guest-inbox","/images/blog/demo/en/guest-inbox-ai-plan-late-arrival.webp","Inbox tamu Hotelier Tools dengan percakapan WhatsApp dari Ingrid Kowalski tentang kedatangan larut malam (identitas terverifikasi, reservasi tertaut), rencana AI berupa draf dengan balasan yang bisa diedit, dan panel Assistant pribadi",{"path":2523,"title":2524,"description":2525,"meta":2526},"/blog/id/connect-chatgpt-to-little-hotelier","Cara menghubungkan ChatGPT ke Little Hotelier (plus 18 prompt untuk hotel kecil)","Hubungkan ChatGPT ke Little Hotelier lewat developer mode dan aplikasi MCP, cek izin paket Anda, plus 18 prompt untuk kedatangan, pembayaran, dan harga.",{"date":2368,"category":2369,"tags":2527,"keywords":2530,"feature":2384,"cover":2537,"coverAlt":2538},[2528,2371,2369,2529,2426],"chatgpt","prompts",[2531,2532,2533,2534,2535,2536],"menghubungkan chatgpt ke little hotelier","chatgpt mcp connector","connector chatgpt mcp","prompt chatgpt untuk hotel","chatgpt untuk manajemen hotel","chatgpt developer mode mcp","/images/blog/demo/en/mcp-oauth-consent.webp","Halaman Authorize MCP access di Hotelier Tools yang dibuka asisten AI saat terhubung, dengan pemberitahuan token 30 hari serta tombol Deny dan Allow access",{"path":2540,"title":2541,"description":2542,"meta":2543},"/blog/id/connect-claude-to-little-hotelier","Cara menghubungkan Claude ke Little Hotelier (MCP, langkah demi langkah)","Hubungkan Claude ke Little Hotelier lewat custom connector: tempel satu URL, login, izinkan akses. Prompt awal, keamanan aksi tulis, dan pemecahan masalah.",{"date":2368,"category":2369,"tags":2544,"keywords":2546,"feature":2384,"cover":2385,"coverAlt":2552,"featured":1042},[192,2371,2369,2545,2426],"connectors",[2547,2380,2548,2549,2550,2551],"cara menghubungkan claude ke little hotelier","mcp claude adalah","claude desktop mcp setup","claude custom connector","ai little hotelier","Panduan setup MCP Hotelier Tools dengan penjelasan What is MCP? dan tab Claude Desktop terpilih, menampilkan langkah-langkah dan cuplikan konfigurasi berisi URL server MCP",{"path":2554,"title":2555,"description":2556,"meta":2557},"/blog/id/hotel-front-desk-checklist-automation","Checklist harian front desk hotel untuk Little Hotelier: 8 masalah sebelum tamu tiba","Checklist front desk harian untuk Little Hotelier: 8 masalah reservasi yang perlu dideteksi sebelum kedatangan, dan cara mengotomatiskan lima di antaranya.",{"date":2368,"category":2558,"tags":2559,"keywords":2562,"feature":2569,"cover":2570,"coverAlt":2571},"operations",[2424,2560,2561,2486,2426],"checklist","check-in",[2563,2564,2565,2566,2567,2568],"checklist front office hotel","checklist harian front desk hotel","template checklist front desk","checklist check in hotel","reservasi belum ada kamar little hotelier","otomatisasi hotel","automated-checks","/images/blog/demo/en/automated-checks-lifecycle.webp","Halaman Automated Checks di Hotelier Tools: cara kerja pengecekan dalam empat langkah, pemberitahuan Nothing runs any check yet yang menyarankan Before they arrive, dan The journey of a reservation melalui lima tahapnya",{"path":2573,"title":2574,"description":2575,"meta":2576},"/blog/id/little-hotelier-cta-ctd-stop-sell","CTA, CTD, minimum stay, dan stop sell di Little Hotelier: apa artinya?","CTA menutup check-in, CTD menutup check-out, min stay menetapkan masa inap terpendek, stop sell menutup penjualan. Cara mengaturnya di Little Hotelier.",{"date":2368,"category":2577,"tags":2578,"keywords":2583,"feature":2591,"cover":2592,"coverAlt":2593},"pricing",[2579,2580,2581,2582,2426],"restrictions","cta","ctd","stop sell",[2584,2585,2586,2587,2588,2589,2590],"CTA CTD hotel adalah","closed to arrival adalah","stop sell hotel adalah","what is cta in little hotelier","little hotelier cta ctd","siteminder stop sell","minimum stay hotel adalah","dynamic-pricing","/images/blog/demo/en/price-recommendations.webp","Rekomendasi harga di Hotelier Tools untuk kamar Doble Estándar, 3 sampai 16 Oktober 2026: harga saat ini dan harga yang direkomendasikan per malam, kolom CTA / CTD dengan tombol A dan D, minimum stay, kolom Channel, dan tombol Apply to Little Hotelier",{"path":2595,"title":2596,"description":2597,"meta":2598},"/blog/id/hotel-do-not-rent-list","Daftar hitam tamu hotel: cara membuat daftar do-not-rent secara legal di Little Hotelier","Hotel boleh punya daftar do-not-rent menurut GDPR asal isinya fakta. Apa yang dicatat, apa yang dilarang, dan cara mendapat peringatan di Little Hotelier.",{"date":2368,"category":2558,"tags":2599,"keywords":2603,"feature":2569,"cover":2610,"coverAlt":2611},[2600,2601,2506,2602,2426],"do not rent list","gdpr","watchlist",[2604,2605,2606,2607,2608,2609],"daftar hitam tamu hotel","blacklist tamu hotel","daftar tamu bermasalah hotel","daftar do-not-rent gdpr","blokir tamu booking.com","catatan tamu little hotelier","/images/blog/demo/en/automated-checks-do-not-rebook-list.webp","Daftar do-not-rebook di Hotelier Tools: kartu pengecekan malam, pengecekan reservasi yang menampilkan kecocokan kuat beserta alasan faktual, dan satu entri dengan Edit, Deactivate, dan Delete",{"path":2613,"title":2614,"description":2615,"meta":2616},"/blog/id/dynamic-pricing-little-hotelier","Dynamic pricing untuk hotel kecil di Little Hotelier: harga kompetitor, acara lokal, dan aturan","Atur harga sesuai permintaan di Little Hotelier: rutinitas mingguan, opsi bawaan, dan rekomendasi beserta alasannya yang baru berlaku setelah Anda setujui.",{"date":2368,"category":2577,"tags":2617,"keywords":2621,"feature":2591,"cover":2592,"coverAlt":2628},[2618,2619,2620,2426,2577],"dynamic pricing","revenue management","competitor prices",[2622,2623,2624,2625,2626,2627],"dynamic pricing little hotelier","dynamic pricing hotel adalah","tools dynamic pricing hotel","rate shopping hotel","revenue management hotel adalah","cara menentukan harga jual kamar hotel","Halaman rekomendasi harga di Hotelier Tools untuk 14 malam: tabel Doble Estándar dengan tarif saat ini, tarif rekomendasi, perubahan, median pasar, dan harga yang dibayar tamu per malam, serta bilah Apply to Little Hotelier tanpa harga yang dipilih",{"path":2630,"title":2631,"description":2632,"meta":2633},"/blog/id/little-hotelier-chrome-extensions","Ekstensi Chrome Little Hotelier: userscript gratis agar lebih cepat","Userscript gratis untuk Little Hotelier: harga di kalender, tabel lebih lebar, estimasi komisi Booking.com, invoice sekali klik. Cara pasang dengan aman.",{"date":2368,"category":2442,"tags":2634,"keywords":2639,"cover":2646,"coverAlt":2647},[2635,2636,2637,2426,2638],"chrome extension","tampermonkey","userscripts","productivity",[2640,2641,2642,2643,2644,2645],"ekstensi chrome little hotelier","little hotelier chrome extension","tampermonkey scripts","userscript chrome","little hotelier calendar prices","little hotelier booking.com commission","/images/scripts/prices-display/to.png","Kalender Little Hotelier (antarmuka bahasa Spanyol) dengan harga setiap malam di bawah tiap tipe kamar, ditambahkan oleh skrip Prices Display",{"path":2649,"title":2650,"description":2651,"meta":2652},"/blog/id/export-little-hotelier-reservations-excel","Export data reservasi dan daftar tamu Little Hotelier ke Excel (sebelum data tamu disamarkan)","Little Hotelier menyamarkan data tamu 180 hari setelah check-out. Ekspor reservasi dan daftar tamu ke Excel atau Sheets sekarang, manual atau otomatis.",{"date":2368,"category":2374,"tags":2653,"keywords":2658,"feature":2384,"cover":2666,"coverAlt":2667},[2654,2655,2656,2657,2426],"export","excel","google sheets","reports",[2659,2660,2661,2662,2663,2664,2665],"export data reservasi little hotelier ke excel","laporan little hotelier","little hotelier export excel","little hotelier csv","daftar tamu hotel excel","laporan harian hotel","data tamu little hotelier disamarkan","/images/blog/demo/en/developer-portal.webp","Portal developer Hotelier Tools dengan kartu REST API dan Swagger, MCP setup, API keys, dan LH methods, di atas contoh autentikasi memakai API key",{"path":2669,"title":2670,"description":2671,"meta":2672},"/blog/id/little-hotelier-integrations","Integrasi Little Hotelier terbaik 2026: akuntansi, check-in, harga, pesan tamu, dan AI","Apa saja yang terhubung ke Little Hotelier di 2026: ekspor Xero dan QuickBooks, check-in Chekin dan Duve, tool harga, pesan tamu, AI, dan add-on gratis.",{"date":2368,"category":2374,"tags":2673,"keywords":2678,"feature":2384,"cover":2666,"coverAlt":2686},[2674,2675,2676,2677,2426],"integrations","app store","xero","chekin",[2679,2680,2681,2682,2683,2684,2685],"integrasi little hotelier","little hotelier integrations","little hotelier xero integration","little hotelier app store","little hotelier booking widget","little hotelier chekin","little hotelier zapier","Portal developer di Hotelier Tools dengan kartu untuk REST API & Swagger, MCP setup, API keys, dan LH methods, serta kotak Authentication berisi contoh cURL dengan API key placeholder",{"path":2688,"title":2689,"description":2690,"meta":2691},"/blog/id/booking-com-invalid-card-no-show","Kartu kredit tidak valid atau no-show di Booking.com: apa yang harus dilakukan","Tandai kartu tidak valid, beri tamu 24 jam, lalu batalkan tanpa komisi. Plus batas waktu no-show, virtual card ditolak, dan cara mendeteksinya lebih awal.",{"date":2368,"category":2558,"tags":2692,"keywords":2696,"feature":2569,"cover":2703,"coverAlt":2704},[2485,2693,2694,2426,2695],"no-show","payments","automated checks",[2697,2698,2699,2700,2701,2702],"kartu kredit tidak valid booking.com","no show hotel adalah","biaya no show booking.com","virtual card booking.com ditolak","tandai kartu kredit tidak valid booking.com","komisi no show booking.com","/images/blog/demo/en/automated-checks-issues.webp","Halaman Issues di Hotelier Tools dengan 20 masalah terbuka, 5 selesai, dan total 25 masalah, serta reservasi dengan peringatan saldo belum lunas saat kedatangan dan tombol Verify",{"path":2706,"title":2707,"description":2708,"meta":2709},"/blog/id/booking-com-commission","Komisi Booking.com berapa persen? Cara melihat pendapatan bersih di Little Hotelier","Tidak ada tarif tunggal: persentasenya sesuai perjanjian, plus program dan biaya pembayaran. Dasar pengenaan, PPN, dan pendapatan bersih per reservasi.",{"date":2368,"category":2442,"tags":2710,"keywords":2714,"cover":2721,"coverAlt":2722},[2485,2711,2426,2712,2713],"commission","userscript","vat",[2715,2716,2717,2718,2719,2720],"komisi booking.com berapa persen","komisi booking com untuk hotel","kalkulator komisi booking com","cara bayar komisi booking com","komisi genius booking.com","biaya pembayaran booking.com","/images/scripts/show-booking-commissions/to.png","Ringkasan reservasi Little Hotelier (antarmuka bahasa Spanyol) dengan komisi Booking.com, biaya pembayaran, dan perkiraan pendapatan bersih yang ditambahkan oleh skrip gratis",{"path":2724,"title":2725,"description":2726,"meta":2727},"/blog/id/little-hotelier-api","Little Hotelier punya API? Jawaban 2026 dan cara mengambil data Anda","Tidak ada API key untuk reservasi atau tamu Anda. Apa yang resmi dari SiteMinder, dan cara membaca data Little Hotelier lewat REST dalam hitungan menit.",{"date":2368,"category":2374,"tags":2728,"keywords":2732,"feature":2384,"cover":2740,"coverAlt":2741,"featured":1042},[2374,2729,2426,2730,2731],"rest","siteminder","developers",[2733,2734,2735,2736,2737,2738,2739],"little hotelier api","API Little Hotelier adalah","little hotelier api documentation","little hotelier api key","siteminder api","siteminder exchange api","little hotelier rest api","/images/blog/demo/en/rest-api-reference.webp","Halaman REST API reference di Hotelier Tools dengan base URL, unduhan openapi.json, kotak Quick authorize (kolom Bearer token, Authorize Swagger, Use my session), dan template kode dalam cURL, JavaScript, Python, dan PowerShell",{"path":2743,"title":2744,"description":2745,"meta":2746},"/blog/id/what-is-mcp-server-hotels","MCP server adalah? Panduan untuk pemilik hotel (dan PMS mana yang punya)","MCP server memungkinkan Claude atau ChatGPT membaca dan bertindak di software hotel Anda. Panduan sederhana, tips keamanan, dan PMS mana yang punya (2026).",{"date":2368,"category":2369,"tags":2747,"keywords":2748,"feature":2384,"cover":2385,"coverAlt":2754,"featured":1042},[2371,2369,192,2528,2444],[2381,2749,2548,2750,2380,2751,2752,2753],"mcp adalah ai","mcp server untuk hotel","apaleo mcp server","mews mcp server","cloudbeds mcp server","Panduan setup MCP di Hotelier Tools dengan penjelasan What is MCP? dan tab Client configuration untuk Claude Desktop, VS Code, Cursor, dan Custom / SDK, menampilkan konfigurasi Claude Desktop dengan alamat server",{"path":2756,"title":2757,"description":2758,"meta":2759},"/blog/id/booking-com-guest-messages","Pesan tamu Booking.com: cara mengelolanya tanpa terus-menerus membuka extranet","Pulse, template, pesan terjadwal, balasan otomatis, cara mengenali pesan palsu Booking.com, dan satu inbox untuk Booking.com, WhatsApp, dan email.",{"date":2368,"category":2506,"tags":2760,"keywords":2763,"feature":2519,"cover":2771,"coverAlt":2772},[2485,2761,2511,2762,2426],"guest messages","templates",[2764,2765,2766,2767,2768,2769,2770],"pesan tamu booking.com","pesan booking.com tidak muncul","pesan terjadwal booking com","template email booking com","balasan otomatis booking.com","pesan phishing booking.com","guest q&a booking.com","/images/blog/demo/en/guest-inbox-ai-draft-availability.webp","Inbox tamu Hotelier Tools dengan filter WhatsApp, Email, dan Booking.com, email dari tamu yang menanyakan kamar double pada bulan September, rencana AI berupa draf dengan balasan bahasa Inggris yang bisa diedit, dan panel asisten privat",{"path":2774,"title":2775,"description":2776,"meta":2777},"/blog/id/little-hotelier-tips","Tips dan fitur tersembunyi Little Hotelier yang jarang diketahui pemilik (2026)","20 tips Little Hotelier: kalender lebih cepat, passkey, tarif minimum, gap night, tautan pemesanan, audit log, dan skrip gratis untuk harga di kalender.",{"date":2368,"category":2442,"tags":2778,"keywords":2781,"feature":2788,"cover":2789,"coverAlt":2790},[2442,2779,2780,2637,2426],"how to","calendar",[2453,2782,2783,2784,2785,2786,2787],"cara menggunakan little hotelier","little hotelier tutorial","little hotelier tips","little hotelier hidden features","little hotelier calendar","aplikasi manajemen guest house","dashboard","/images/scripts/full-width-reservation-table/to.png","Halaman Reservations Little Hotelier (antarmuka bahasa Spanyol) yang diperlebar hingga selebar layar oleh skrip Full Width Reservation Table: filter pencarian, tombol Buscar, 36 reservasi ditemukan, dan tautan Exportar",{"path":2792,"title":2793,"description":2794,"meta":2795},"/blog/id/hotel-waitlist-sold-out-dates","Waiting list hotel: cara mengelolanya untuk tanggal penuh (dan cepat mengisi kamar batal)","Simpan daftar tamu yang menginginkan tanggal penuh dan tawarkan kamar kosong lebih dulu. Metode spreadsheet, lalu pemantauan otomatis dan formulir publik.",{"date":2368,"category":2506,"tags":2796,"keywords":2801,"feature":2797,"cover":2808,"coverAlt":2809},[2797,2798,2799,2426,2800],"waitlist","cancellations","direct booking","availability",[2802,2803,2804,2805,2806,2807],"waiting list hotel adalah","waitlist hotel artinya","waiting list hotel penuh","waiting list pembatalan hotel","mengisi kamar batal hotel","formulir waiting list hotel","/images/blog/demo/en/availability-waiting-list.webp","Halaman Availability queue di Hotelier Tools dengan History dan Check the queue now, kartu Checks on the queue yang menawarkan Check every night at 01:00, dan formulir Add a stay to watch dengan malam, kamar yang dibutuhkan, tipe kamar, dan data tamu",{"path":2811,"title":2812,"description":2813,"meta":2814},"/blog/id/guest-registration-rules-by-country","Wajib lapor tamu asing: aturan pendaftaran tamu hotel per negara (2026)","Tamu mana yang wajib didaftarkan hotel, data apa, seberapa cepat, ke mana: Indonesia (APOA), Spanyol, Italia, Portugal, Jerman, Prancis, Brasil, Thailand.",{"date":2368,"category":2815,"tags":2816,"keywords":2819,"cover":2827,"coverAlt":2828},"compliance",[2817,2815,2413,2818,2426],"guest registration","police",[2820,2821,2822,2823,2824,2825,2826],"wajib lapor tamu asing","apoa imigrasi hotel","lapor tamu asing penginapan","pendaftaran tamu hotel per negara","check in hotel paspor","alloggiati web","tm30 hotel","/images/blog/demo/en/automated-checks-moment-on-arrival.webp","Pengecekan When they arrive di Hotelier Tools: ID / passport (police register), physical room assignment, serta validasi alamat dan asal diaktifkan, beserta apa yang bisa dan tidak bisa dilakukan tiap pengecekan",1791141231163]