[{"data":1,"prerenderedAt":111},["ShallowReactive",2],{"CookieConsentModal_PowhyziZDBT1zSRXZPF4TZtvUyKPz4wXDunSxAjYU":3,"info-pagename-ai":14,"$7GhbF9hkDe":25,"newsletter-airports":103,"FooterContact_iXvQAfzL97vvGiniABnWNWZIxQEo9TjGGgPhyTVik":104},["Island",4],{"key":5,"result":6},"CookieConsentModal_PowhyziZDBT1zSRXZPF4TZtvUyKPz4wXDunSxAjYU",{"head":7},{"script":8,"link":12,"style":13},[9],{"tagPosition":10,"innerHTML":11},"bodyClose","window.__handleCookieConsent=(type)=>{document.getElementById('cookieConsentModal').style.display='none';setTimeout(()=>{const version=1.2;const timestamp=Math.floor(Date.now()\u002F1000);const rbcs={v:version,t:timestamp,};rbcs.f=1;rbcs.p=type==='all'?1:(document.getElementById('rbtc_p')?.checked?1:0);rbcs.a=type==='all'?1:(document.getElementById('rbtc_a')?.checked?1:0);rbcs.all=!!(rbcs.f&&rbcs.p&&rbcs.a);try{localStorage.setItem('rbcs',JSON.stringify(rbcs));}catch(e){}window.dispatchEvent(new Event('cookie-consent-answered'));},100);};try{const cookieConsent=localStorage.getItem('rbcs');const isUserBot=(navigator.webdriver||\u002F(bot|crawler|spider|pagespeed|lighthouse|AhrefsSiteAudit|AhrefsBot)\u002F.test(navigator.userAgent));if(!isUserBot&&(!cookieConsent||JSON.parse(cookieConsent).v\u003C1.2)){document.getElementById('cookieConsentModal').style.display='block';}}catch(e){console.error(e);}",[],[],{"info":15},{"id":16,"topic":17,"hide_title":18,"topic_translationkey":19,"url":20,"meta_description":21,"html":22,"html_translationkey":23,"picture_cloudinary":24,"scripts":21},280,"AI",false,"staticpage-editor:280:topic_translationkey","ai",null,"\u003Ch2>MCP TOOL\u003C\u002Fh2>\u003Cp>\u003C\u002Fp>\u003Cdiv data-background-color=\"#ffffff\" data-type=\"colored-block\" style=\"background-color: rgb(255, 255, 255); padding: 16px 24px; border-radius: 8px; overflow: hidden;\">\u003Ch3>Calendar\u003C\u002Fh3>\u003Cp>Search Rolfs Flyg &amp; Buss trips by destination and get each trip's bookable departures.\u003C\u002Fp>\u003Cp>Provide a free-text destination (and optionally a date window, market, transport mode, and origin airport). The tool runs your query through the site search and returns every matching trip along with its available departures for those dates.\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv data-background-color=\"#ffffff\" data-type=\"colored-block\" style=\"background-color: rgb(255, 255, 255); padding: 16px 24px; border-radius: 8px; overflow: hidden;\">\u003Ch3>Endpoint\u003C\u002Fh3>\u003Cdiv>\u003Cp>POST \u003Ccode>https:\u002F\u002Fapi.rolfsbuss.se\u002Fmcp\u002Fcalendar\u003C\u002Fcode>\u003Cbr>Model Context Protocol over Streamable HTTP (JSON-RPC 2.0).\u003Cbr>Open endpoint – no authentication or API key required.\u003C\u002Fp>\u003C\u002Fdiv>\u003C\u002Fdiv>\u003Cdiv data-background-color=\"#ffffff\" data-type=\"colored-block\" style=\"background-color: rgb(255, 255, 255); padding: 16px 24px; border-radius: 8px; overflow: hidden;\">\u003Ch3>Parameters\u003C\u002Fh3>\u003Cp>\u003Cstrong>destination\u003C\u002Fstrong> (string, required) Free-text destination or trip name, e.g. \"Portugal\", \"Antalya\", \"textil\". Typo-tolerant.\u003C\u002Fp>\u003Cp>\u003Cstrong>market\u003C\u002Fstrong> (enum, optional) Which market to search: sv = Sweden, no = Norway, both = all markets. Default: sv.\u003C\u002Fp>\u003Cp>\u003Cstrong>start_date\u003C\u002Fstrong> (date YYYY-MM-DD, optional) Earliest departure date. Default: tomorrow.\u003C\u002Fp>\u003Cp>\u003Cstrong>end_date\u003C\u002Fstrong> (date YYYY-MM-DD, optional) Latest departure date. Default: 6 months after start.\u003C\u002Fp>\u003Cp>\u003Cstrong>transport\u003C\u002Fstrong> (enum, optional) Filter by transport type: airport = flights only, bus = bus only, any = both. Default: any.\u003C\u002Fp>\u003Cp>\u003Cstrong>airport\u003C\u002Fstrong> (IATA code or \"all\", optional) Origin airport as a 3-letter code, e.g. CPH, ARN, OSL, GOT. Only applies to flight departures.\u003C\u002Fp>\u003C\u002Fdiv>\u003Cdiv data-background-color=\"#ffffff\" data-type=\"colored-block\" style=\"background-color: rgb(255, 255, 255); padding: 16px 24px; border-radius: 8px; overflow: hidden;\">\u003Ch3>Response\u003C\u002Fh3>\u003Cp>A summary object plus a list of trips. Only trips with at least one departure matching the chosen filters are included.\u003C\u002Fp>\u003Cp>\u003Cstrong>Summary fields\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>trip_count – number of trips returned\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>trips_without_departures – how many matches were dropped for having no departures in the selected window\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>\u003Cstrong>Each trip includes\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>title – trip name\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>triptype_url – full link to the trip on \u003Ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\u002F\u002Fwww.rolfsbuss.se\">rolfsbuss.se\u003C\u002Fa>\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>image – full image URL\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>price_min – lowest available price\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003Cp>\u003Cstrong>Each departure includes\u003C\u002Fstrong>\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cp>tripname, departureID, date, returnDate, price, seatsleft\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fdiv>\u003Ch3>\u003C\u002Fh3>\u003Cdiv data-background-color=\"#ffffff\" data-type=\"colored-block\" style=\"background-color: rgb(255, 255, 255); padding: 16px 24px; border-radius: 8px; overflow: hidden;\">\u003Ch3>Example\u003C\u002Fh3>\u003Cp>\u003Cstrong>\u003Cem>Flights to Portugal from Copenhagen, autumn 2026:\u003C\u002Fem>\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>POST https:\u002F\u002Fapi.rolfsbuss.se\u002Fmcp\u002Fcalendar\nContent-Type: application\u002Fjson\nAccept: application\u002Fjson, text\u002Fevent-stream\n\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools\u002Fcall\",\n  \"params\": {\n    \"name\": \"calendar\",\n    \"arguments\": {\n      \"destination\": \"Portugal\",\n      \"market\": \"sv\",\n      \"transport\": \"airport\",\n      \"airport\": \"CPH\",\n      \"start_date\": \"2026-09-01\",\n      \"end_date\": \"2026-10-31\"\n    }\n  }\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>Response (trimmed):\u003C\u002Fstrong>\u003C\u002Fp>\u003Cpre>\u003Ccode>{\n  \"query\": \"Portugal\",\n  \"markets\": [\"sv\"],\n  \"transport\": \"airport\",\n  \"airport\": \"CPH\",\n  \"trip_count\": 1,\n  \"trips_without_departures\": 0,\n  \"trips\": [\n    {\n      \"market\": \"sv\",\n      \"triptype_id\": 2156,\n      \"title\": \"Textil och kultur i Portugal\",\n      \"price_min\": 14975,\n      \"image\": \"https:\u002F\u002Flvj1vt15bh.execute-api.eu-north-1.amazonaws.com\u002Fsource\u002Ftrip-main\u002Fflyg-alentejo-textil\",\n      \"triptype_url\": \"https:\u002F\u002Fwww.rolfsbuss.se\u002Fflyg\u002Falentejo-textil\",\n      \"departure_count\": 1,\n      \"departures\": [\n        {\n          \"tripname\": \"Textil och kultur i Portugal 7d\",\n          \"departureID\": 60386,\n          \"date\": \"2026-09-27\",\n          \"returnDate\": \"2026-10-03\",\n          \"price\": 14975,\n          \"seatsleft\": 9\n        }\n      ]\n    }\n  ]\n}\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\u003Cdiv data-background-color=\"#ffffff\" data-type=\"colored-block\" style=\"background-color: rgb(255, 255, 255); padding: 16px 24px; border-radius: 8px; overflow: hidden;\">\u003Ch3>Connecting\u003C\u002Fh3>\u003Cp>Most agent frameworks (Claude SDK, OpenAI connectors, the MCP SDKs) only need the endpoint URL. Manually, it's plain JSON-RPC 2.0: \u003Ccode>initialize\u003C\u002Fcode> → \u003Ccode>tools\u002Flist\u003C\u002Fcode> → \u003Ccode>tools\u002Fcall\u003C\u002Fcode>.\u003C\u002Fp>\u003Cp>Rolfs Flyg &amp; Buss – MCP tools. More tools coming soon.\u003C\u002Fp>\u003C\u002Fdiv>\u003Ch3>\u003C\u002Fh3>\u003Cp>\u003C\u002Fp>","staticpage-editor:280:html_translationkey","source\u002Fbanners\u002Fluke-jones-tBvF46kmwBw-unsplash",[26,52],{"id":27,"label":28,"position":29,"market_id":30,"links":31},9,"Rolfs Reiser",0,"no",[32,36,40,44,48],{"id":33,"label":34,"link":35,"footer_title_id":27,"position":29,"absoluteLink":18},41,"Om Rolfs Reiser","\u002Finfo\u002Fom",{"id":37,"label":38,"link":39,"footer_title_id":27,"position":29,"absoluteLink":18},42,"Generell informasjon","\u002Finfo\u002Fgenerell-informasjon",{"id":41,"label":42,"link":43,"footer_title_id":27,"position":29,"absoluteLink":18},43,"Vilkår for pakkereiser","\u002Finfo\u002Fvilkar",{"id":45,"label":46,"link":47,"footer_title_id":27,"position":29,"absoluteLink":18},121,"Din reise","\u002Fdinreise",{"id":49,"label":50,"link":51,"footer_title_id":27,"position":29,"absoluteLink":18},124,"Håndtering av personopplysninger","\u002Finfo\u002Fpersonopplysninger",{"id":53,"label":54,"position":29,"market_id":30,"links":55},10,"Informasjon",[56,61,66,71,76,81,86,91,96,100],{"id":57,"label":58,"link":59,"footer_title_id":53,"position":60,"absoluteLink":18},125,"Nyheter og tilbud","\u002Finfo\u002Fnyhetsbrev",1,{"id":62,"label":63,"link":64,"footer_title_id":53,"position":65,"absoluteLink":18},129,"Reklamasjon","\u002Freklamasjon",2,{"id":67,"label":68,"link":69,"footer_title_id":53,"position":70,"absoluteLink":18},144,"Liste over alle våre hoteller","\u002Fhoteller",3,{"id":72,"label":73,"link":74,"footer_title_id":53,"position":75,"absoluteLink":18},146,"Blogg","\u002Fblogg",4,{"id":77,"label":78,"link":79,"footer_title_id":53,"position":80,"absoluteLink":18},164,"Kampanje","\u002Fkampanje",5,{"id":82,"label":83,"link":84,"footer_title_id":53,"position":85,"absoluteLink":18},165,"Artikler","\u002Finfo",6,{"id":87,"label":88,"link":89,"footer_title_id":53,"position":90,"absoluteLink":18},175,"Gavekort","\u002Fgavekort",7,{"id":92,"label":93,"link":94,"footer_title_id":53,"position":95,"absoluteLink":18},194,"Togforbindelser","\u002Finfo\u002Fforbindelser",8,{"id":97,"label":98,"link":99,"footer_title_id":53,"position":27,"absoluteLink":18},193,"Kommende turer","\u002Fkommende-turer",{"id":101,"label":17,"link":102,"footer_title_id":53,"position":53,"absoluteLink":18},184,"\u002Finfo\u002Fai",[],["Island",105],{"key":106,"result":107},"FooterContact_iXvQAfzL97vvGiniABnWNWZIxQEo9TjGGgPhyTVik",{"head":108},{"link":109,"style":110},[],[],1793008928069]