[{"data":1,"prerenderedAt":2742},["ShallowReactive",2],{"navigation":3,"page:\u002Fguides\u002Fmcp":1019,"surround:\u002Fguides\u002Fmcp":2734},[4,21,82,133,154,1010],[5,6,7,8],"Getting started","\u002Fgetting-started","i-lucide-rocket",[9,12,15,18],[10,6,11,11],"What Kaabist is",0,[13,14,11,11],"API keys and modes","keys-and-modes",[16,17,11,11],"Your first job","first-job",[19,20,11,11],"Understanding the envelope","envelope",[22,23,24,25],"Concepts","\u002Fconcepts","i-lucide-book-open",[26,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79],[27,23,11,11],"Overview",[29,30,11,11],"Programs and versions","programs-and-versions",[32,33,11,11],"Tiers and escalation","tiers-and-escalation",[35,36,11,11],"The http tier","http-tier",[38,39,11,11],"The browser tier","browser-tier",[41,42,11,11],"Sessions","sessions",[44,45,11,11],"Human in the loop","human-in-the-loop",[47,48,11,11],"How healing works","self-healing",[50,51,11,11],"Obstacles and captchas","obstacles",[53,54,11,11],"Validation and warnings","validation-and-warnings",[56,57,11,11],"Credits and billing","credits-and-billing",[59,60,11,11],"Limits","limits",[62,63,11,11],"Locators","locators",[65,66,11,11],"Snapshots","snapshots",[68,69,11,11],"Egress and proxies","egress-and-proxies",[71,72,11,11],"Queueing and fairness","queueing",[74,75,11,11],"Accounts, organisations and roles","accounts-and-roles",[77,78,11,11],"Data retention","data-retention",[80,81,11,11],"Documents and PDFs","documents-and-pdfs",[83,84,85,86],"Guides","\u002Fguides","i-lucide-map",[87,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130],[27,84,11,11],[89,90,11,11],"Authenticated flows","authenticated-flows",[92,93,11,11],"Hosted resolve pages","hosted-resolve",[95,96,11,11],"Lists and pagination","lists-and-pagination",[98,99,11,11],"JSON and network locators","json-and-network-locators",[101,102,11,11],"Schedules and change detection","schedules-and-change-detection",[104,105,11,11],"Webhooks","webhooks",[107,108,11,11],"Bring your own providers","byo-providers",[110,111,11,11],"Testing: replay, dry-run and test mode","testing",[113,114,11,11],"Side-effect safety","side-effect-safety",[116,117,11,11],"Security & data handling","security-and-data",[119,120,11,11],"Migrating from other tools","migrating",[122,123,11,11],"Drift detection and canaries","drift-and-canaries",[125,126,11,11],"SDKs","sdks",[128,129,11,11],"The kaab CLI","cli",[131,132,11,11],"Coding agents (MCP)","mcp",[134,135,136,137],"Panel","\u002Fpanel","i-lucide-layout-dashboard",[138,139,142,145,148,151],[27,135,11,11],[140,141,11,11],"The program builder","builder",[143,144,11,11],"Picking and recording","picking-and-recording",[146,147,11,11],"Taking over a job","takeover",[149,150,11,11],"Getting help","support",[152,153,11,11],"Referrals","referrals",[155,156,157,158],"Reference","\u002Freference","i-lucide-library",[159,160,520,834,837,840,1006,1007],[27,156,11,11],[161,162,11,163],"API","api",[164,166,169,212,222,274,297,316,347,376,389,396,403,410,426,447,454],[27,165,11,11],"\u002Freference\u002Fapi",[167,168,11,11],"Interactive reference","explorer",[170,171,11,172],"Jobs","jobs",[173,176,179,182,185,188,191,194,197,200,203,206,209],[174,175,11,11],"Create job","create-job",[177,178,11,11],"List jobs","list-jobs",[180,181,11,11],"Create job batch","create-job-batch",[183,184,11,11],"Estimate job","estimate-job",[186,187,11,11],"Get job","get-job",[189,190,11,11],"List job steps","list-job-steps",[192,193,11,11],"Get job snapshot","get-job-snapshot",[195,196,11,11],"Get job screenshot","get-job-screenshot",[198,199,11,11],"Get job artifact","get-job-artifact",[201,202,11,11],"Submit job input","submit-job-input",[204,205,11,11],"Resume job","resume-job",[207,208,11,11],"Takeover job","takeover-job",[210,211,11,11],"Cancel job","cancel-job",[213,214,11,215],"Batches","batches",[216,219],[217,218,11,11],"Get batch","get-batch",[220,221,11,11],"List batch jobs","list-batch-jobs",[223,224,11,225],"Programs","programs",[226,229,232,235,238,241,244,247,250,253,256,259,262,265,268,271],[227,228,11,11],"Create program","create-program",[230,231,11,11],"List programs","list-programs",[233,234,11,11],"Lint program","lint-program",[236,237,11,11],"Get program","get-program",[239,240,11,11],"Update program","update-program",[242,243,11,11],"Delete program","delete-program",[245,246,11,11],"List program versions","list-program-versions",[248,249,11,11],"Create program version","create-program-version",[251,252,11,11],"Update program version","update-program-version",[254,255,11,11],"Delete program version","delete-program-version",[257,258,11,11],"Get program version","get-program-version",[260,261,11,11],"Publish program version","publish-program-version",[263,264,11,11],"Diff program version","diff-program-version",[266,267,11,11],"Replay program version","replay-program-version",[269,270,11,11],"Set program alias","set-program-alias",[272,273,11,11],"Delete program alias","delete-program-alias",[41,42,11,275],[276,279,282,285,288,291,294],[277,278,11,11],"Create session","create-session",[280,281,11,11],"List sessions","list-sessions",[283,284,11,11],"Get session","get-session",[286,287,11,11],"Update session","update-session",[289,290,11,11],"Delete session","delete-session",[292,293,11,11],"Verify session","verify-session",[295,296,11,11],"Refresh session","refresh-session",[298,299,11,300],"Proposals","proposals",[301,304,307,310,313],[302,303,11,11],"List proposals","list-proposals",[305,306,11,11],"Get proposal","get-proposal",[308,309,11,11],"Approve proposal","approve-proposal",[311,312,11,11],"Reject proposal","reject-proposal",[314,315,11,11],"Edit proposal","edit-proposal",[317,318,11,319],"Schedules","schedules",[320,323,326,329,332,335,338,341,344],[321,322,11,11],"Create schedule","create-schedule",[324,325,11,11],"List schedules","list-schedules",[327,328,11,11],"Get schedule","get-schedule",[330,331,11,11],"Update schedule","update-schedule",[333,334,11,11],"Delete schedule","delete-schedule",[336,337,11,11],"Pause schedule","pause-schedule",[339,340,11,11],"Resume schedule","resume-schedule",[342,343,11,11],"List schedule runs","list-schedule-runs",[345,346,11,11],"Get schedule run diff","get-schedule-run-diff",[104,105,11,348],[349,352,355,358,361,364,367,370,373],[350,351,11,11],"Create webhook","create-webhook",[353,354,11,11],"List webhooks","list-webhooks",[356,357,11,11],"Get webhook","get-webhook",[359,360,11,11],"Update webhook","update-webhook",[362,363,11,11],"Delete webhook","delete-webhook",[365,366,11,11],"Rotate webhook secret","rotate-webhook-secret",[368,369,11,11],"List webhook deliveries","list-webhook-deliveries",[371,372,11,11],"Resend webhook delivery","resend-webhook-delivery",[374,375,11,11],"Test webhook","test-webhook",[377,378,11,379],"Organisation","org",[380,383,386],[381,382,11,11],"Rotate org webhook secret","rotate-org-webhook-secret",[384,385,11,11],"Get org","get-org",[387,388,11,11],"Request data deletion","request-data-deletion",[390,391,11,392],"Credits","credits",[393],[394,395,11,11],"Get credits","get-credits",[397,398,11,399],"Ledger","ledger",[400],[401,402,11,11],"List ledger entries","list-ledger-entries",[404,405,11,406],"Usage","usage",[407],[408,409,11,11],"Get usage","get-usage",[411,412,11,413],"API keys","api-keys",[414,417,420,423],[415,416,11,11],"List API keys","list-api-keys",[418,419,11,11],"Create API key","create-api-key",[421,422,11,11],"Rotate API key","rotate-api-key",[424,425,11,11],"Revoke API key","revoke-api-key",[427,108,11,428],"BYO providers",[429,432,435,438,441,444],[430,431,11,11],"List BYO providers","list-byo-providers",[433,434,11,11],"Create BYO provider","create-byo-provider",[436,437,11,11],"Get BYO provider","get-byo-provider",[439,440,11,11],"Update BYO provider","update-byo-provider",[442,443,11,11],"Delete BYO provider","delete-byo-provider",[445,446,11,11],"Test BYO provider","test-byo-provider",[448,449,11,450],"Sites","sites",[451],[452,453,11,11],"Get site profile","get-site-profile",[455,456,11,457],"Objects","schemas",[458,460,463,466,469,470,473,476,479,482,485,487,490,493,496,499,502,505,508,511,514,517],[27,459,11,11],"\u002Freference\u002Fapi\u002Fschemas",[461,462,11,11],"ApiKey","api-key",[464,465,11,11],"Batch","batch",[467,468,11,11],"ByoProvider","byo-provider",[390,391,11,11],[471,472,11,11],"ErrorResponse","error-response",[474,475,11,11],"ExtractSchema","extract-schema",[477,478,11,11],"Job","job",[480,481,11,11],"LedgerEntry","ledger-entry",[483,484,11,11],"LintResult","lint-result",[486,378,11,11],"Org",[488,489,11,11],"Program","program",[491,492,11,11],"ProgramDefinition","program-definition",[494,495,11,11],"ProgramVersion","program-version",[497,498,11,11],"Proposal","proposal",[500,501,11,11],"Schedule","schedule",[503,504,11,11],"Session","session",[506,507,11,11],"SiteProfile","site-profile",[509,510,11,11],"StepRecord","step-record",[512,513,11,11],"Webhook","webhook",[515,516,11,11],"WebhookDelivery","webhook-delivery",[518,519,11,11],"WebhookEvent","webhook-event",[521,522,11,523],"DSL","dsl",[524,526,529,532,535,538,603,637,640,751,754,756],[27,525,11,11],"\u002Freference\u002Fdsl",[527,528,11,11],"Inputs","inputs",[530,531,11,11],"Options","options",[533,534,11,11],"Policies","policies",[536,537,11,11],"Steps","steps",[539,540,11,541],"Actions","actions",[542,544,546,548,550,552,554,556,558,560,562,565,568,570,573,575,577,579,582,585,587,589,591,594,596,598,600],[27,543,11,11],"\u002Freference\u002Fdsl\u002Factions",[545,545,11,11],"fill",[547,547,11,11],"click",[549,549,11,11],"press",[551,551,11,11],"hover",[553,553,11,11],"select",[555,555,11,11],"check",[557,557,11,11],"uncheck",[559,559,11,11],"upload",[561,561,11,11],"scroll",[563,564,11,11],"wait_for","wait-for",[566,567,11,11],"set_session","set-session",[569,569,11,11],"extract",[571,572,11,11],"capture_response","capture-response",[574,574,11,11],"evaluate",[576,576,11,11],"paginate",[578,578,11,11],"download",[580,581,11,11],"read_pdf","read-pdf",[583,584,11,11],"set_vars","set-vars",[586,586,11,11],"sleep",[588,588,11,11],"reload",[590,590,11,11],"goto",[592,593,11,11],"await_input","await-input",[595,595,11,11],"checkpoint",[597,597,11,11],"screenshot",[599,599,11,11],"when",[601,602,11,11],"loop_until","loop-until",[604,605,11,606],"Conditions","conditions",[607,609,611,613,615,617,619,621,623,625,627,629,631,633,635],[27,608,11,11],"\u002Freference\u002Fdsl\u002Fconditions",[610,610,11,11],"url",[612,612,11,11],"title",[614,614,11,11],"visible",[616,616,11,11],"hidden",[618,618,11,11],"exists",[620,620,11,11],"absent",[622,622,11,11],"text",[624,624,11,11],"count",[626,626,11,11],"network",[628,628,11,11],"var",[630,630,11,11],"landmark",[632,632,11,11],"all",[634,634,11,11],"any",[636,636,11,11],"not",[638,639,11,11],"Targets","targets",[641,642,11,643],"Fields","fields",[644,646,649,651,654,656,659,661,663,666,668,671,672,674,677,679,681,683,685,687,690,693,695,698,701,703,704,707,709,712,714,716,718,720,722,724,726,728,731,733,734,736,738,740,743,745,747,749],[27,645,11,11],"\u002Freference\u002Fdsl\u002Ffields",[647,648,11,11],"allow_suffix","allow-suffix",[650,650,11,11],"attr",[652,653,11,11],"base_url","base-url",[655,655,11,11],"candidates",[657,658,11,11],"case_insensitive","case-insensitive",[660,660,11,11],"country",[662,662,11,11],"currency",[664,665,11,11],"date_format","date-format",[667,667,11,11],"decimal",[669,670,11,11],"false_values","false-values",[642,642,11,11],[673,673,11,11],"flags",[675,676,11,11],"follow_redirects","follow-redirects",[678,678,11,11],"frame",[680,680,11,11],"json",[682,682,11,11],"locale",[684,684,11,11],"many",[686,686,11,11],"max",[688,689,11,11],"max_items","max-items",[691,692,11,11],"max_length","max-length",[694,694,11,11],"min",[696,697,11,11],"min_items","min-items",[699,700,11,11],"min_length","min-length",[702,702,11,11],"name",[626,626,11,11],[705,706,11,11],"null_markers","null-markers",[708,708,11,11],"nullable",[710,711,11,11],"on_invalid","on-invalid",[713,713,11,11],"pattern",[715,715,11,11],"presence",[717,717,11,11],"regex",[719,719,11,11],"required",[721,721,11,11],"role",[723,723,11,11],"sample",[725,725,11,11],"selector",[727,727,11,11],"source",[729,730,11,11],"strip_fragment","strip-fragment",[732,732,11,11],"testid",[622,622,11,11],[735,735,11,11],"thousands",[737,737,11,11],"timezone",[739,739,11,11],"transforms",[741,742,11,11],"true_values","true-values",[744,744,11,11],"type",[746,746,11,11],"unique",[748,748,11,11],"values",[750,750,11,11],"xpath",[752,753,11,11],"Assertions","assertions",[755,739,11,11],"Transforms",[757,758,11,759],"Lint codes","lint",[760,762,765,768,771,774,777,780,783,786,789,792,795,798,801,804,807,810,813,816,819,822,825,828,831],[27,761,11,11],"\u002Freference\u002Fdsl\u002Flint",[763,764,11,11],"E001","e001",[766,767,11,11],"E002","e002",[769,770,11,11],"E003","e003",[772,773,11,11],"E004","e004",[775,776,11,11],"E005","e005",[778,779,11,11],"E006","e006",[781,782,11,11],"E007","e007",[784,785,11,11],"E008","e008",[787,788,11,11],"E009","e009",[790,791,11,11],"E010","e010",[793,794,11,11],"E011","e011",[796,797,11,11],"E012","e012",[799,800,11,11],"E013","e013",[802,803,11,11],"E014","e014",[805,806,11,11],"W001","w001",[808,809,11,11],"W002","w002",[811,812,11,11],"W003","w003",[814,815,11,11],"W004","w004",[817,818,11,11],"W005","w005",[820,821,11,11],"W006","w006",[823,824,11,11],"W007","w007",[826,827,11,11],"W008","w008",[829,830,11,11],"W009","w009",[832,833,11,11],"W010","w010",[835,836,11,11],"Codes","codes",[838,839,11,11],"Events","events",[841,129,11,842],"CLI",[843,845,847,850,853,856,859,862,865,868,871,874,877,880,883,886,889,892,895,898,901,904,907,910,913,916,919,922,925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003],[27,844,11,11],"\u002Freference\u002Fcli",[846,846,11,11],"kaab",[848,849,11,11],"kaab auth","kaab-auth",[851,852,11,11],"kaab auth login","kaab-auth-login",[854,855,11,11],"kaab auth logout","kaab-auth-logout",[857,858,11,11],"kaab auth status","kaab-auth-status",[860,861,11,11],"kaab completion","kaab-completion",[863,864,11,11],"kaab completion bash","kaab-completion-bash",[866,867,11,11],"kaab completion fish","kaab-completion-fish",[869,870,11,11],"kaab completion powershell","kaab-completion-powershell",[872,873,11,11],"kaab completion zsh","kaab-completion-zsh",[875,876,11,11],"kaab credits","kaab-credits",[878,879,11,11],"kaab jobs","kaab-jobs",[881,882,11,11],"kaab jobs cancel","kaab-jobs-cancel",[884,885,11,11],"kaab jobs get","kaab-jobs-get",[887,888,11,11],"kaab jobs input","kaab-jobs-input",[890,891,11,11],"kaab jobs list","kaab-jobs-list",[893,894,11,11],"kaab jobs resume","kaab-jobs-resume",[896,897,11,11],"kaab jobs run","kaab-jobs-run",[899,900,11,11],"kaab jobs snapshot","kaab-jobs-snapshot",[902,903,11,11],"kaab jobs steps","kaab-jobs-steps",[905,906,11,11],"kaab jobs takeover","kaab-jobs-takeover",[908,909,11,11],"kaab open","kaab-open",[911,912,11,11],"kaab open job","kaab-open-job",[914,915,11,11],"kaab programs","kaab-programs",[917,918,11,11],"kaab programs alias","kaab-programs-alias",[920,921,11,11],"kaab programs alias set","kaab-programs-alias-set",[923,924,11,11],"kaab programs diff","kaab-programs-diff",[926,927,11,11],"kaab programs lint","kaab-programs-lint",[929,930,11,11],"kaab programs list","kaab-programs-list",[932,933,11,11],"kaab programs pull","kaab-programs-pull",[935,936,11,11],"kaab programs push","kaab-programs-push",[938,939,11,11],"kaab proposals","kaab-proposals",[941,942,11,11],"kaab proposals approve","kaab-proposals-approve",[944,945,11,11],"kaab proposals list","kaab-proposals-list",[947,948,11,11],"kaab proposals reject","kaab-proposals-reject",[950,951,11,11],"kaab proposals show","kaab-proposals-show",[953,954,11,11],"kaab schedules","kaab-schedules",[956,957,11,11],"kaab schedules create","kaab-schedules-create",[959,960,11,11],"kaab schedules list","kaab-schedules-list",[962,963,11,11],"kaab schedules pause","kaab-schedules-pause",[965,966,11,11],"kaab schedules resume","kaab-schedules-resume",[968,969,11,11],"kaab schedules runs","kaab-schedules-runs",[971,972,11,11],"kaab sessions","kaab-sessions",[974,975,11,11],"kaab sessions create","kaab-sessions-create",[977,978,11,11],"kaab sessions delete","kaab-sessions-delete",[980,981,11,11],"kaab sessions list","kaab-sessions-list",[983,984,11,11],"kaab sessions verify","kaab-sessions-verify",[986,987,11,11],"kaab usage","kaab-usage",[989,990,11,11],"kaab version","kaab-version",[992,993,11,11],"kaab webhooks","kaab-webhooks",[995,996,11,11],"kaab webhooks create","kaab-webhooks-create",[998,999,11,11],"kaab webhooks deliveries","kaab-webhooks-deliveries",[1001,1002,11,11],"kaab webhooks list","kaab-webhooks-list",[1004,1005,11,11],"kaab webhooks test","kaab-webhooks-test",[125,126,11,11],[1008,1009,11,11],"Plans and pricing","plans",[1011,1012,1013,1014],"Changelog","\u002Fchangelog","i-lucide-history",[1015,1016],[27,1012,11,11],[1017,1018,11,11],"Deprecations","deprecations",{"id":1020,"title":131,"body":1021,"breaking":2725,"date":2726,"description":2727,"extension":2728,"generated":2725,"meta":2729,"navigation":2151,"path":2730,"seo":2731,"stem":2732,"version":2726,"__hash__":2733},"docs\u002F3.guides\u002F15.mcp.md",{"type":1022,"value":1023,"toc":2712},"minimark",[1024,1046,1051,1054,1066,1070,1075,1112,1122,1140,1148,1189,1192,1196,1199,1356,1366,1376,1378,1388,1392,1422,1426,1445,1449,1670,1701,1705,1708,1809,1823,1848,1852,1871,1920,1951,1976,1982,2636,2640,2678,2681,2708],[1025,1026,1027,1028,1035,1036,1040,1041,1045],"p",{},"Kaabist runs a hosted ",[1029,1030,1034],"a",{"href":1031,"rel":1032},"https:\u002F\u002Fmodelcontextprotocol.io",[1033],"nofollow","Model Context Protocol"," server at\n",[1037,1038,1039],"code",{},"https:\u002F\u002Fmcp.kaab.ist\u002Fmcp"," that lets a coding agent build programs for you in a ",[1042,1043,1044],"strong",{},"real Kaabist\nbrowser"," on Kaabist's pool, not its own. The agent clicks, fills and reads a condensed page view\nwith ranked locator candidates, tries extracts on the live page, turns what it did into a draft\nprogram, lints and tests it, and follows jobs and healing proposals afterwards.",[1047,1048,1050],"h2",{"id":1049},"when-to-use-it","When to use it",[1025,1052,1053],{},"Connect an agent when you already work with one (Claude Code, Codex, Cursor or any MCP client) and\nwant it to write and maintain programs: describing a site in a sentence and reviewing the program\nit produces is often faster than picking every field by hand. The agent works with your role and\nwithin limits you set, and everything it does is visible in the panel.",[1025,1055,1056,1057,1061,1062,1065],{},"Prefer the ",[1029,1058,1060],{"href":1059},"\u002Fpanel\u002Fbuilder","program builder"," when you want to pick fields yourself, and the\n",[1029,1063,125],{"href":1064},"\u002Fguides\u002Fsdks"," when your own code runs programs in production. An agent is a way to author\nprograms, not a runtime.",[1047,1067,1069],{"id":1068},"connect","Connect",[1025,1071,1072],{},[1042,1073,1074],{},"Claude Code",[1076,1077,1082],"pre",{"className":1078,"code":1079,"language":1080,"meta":1081,"style":1081},"language-bash shiki shiki-themes kaab-code kaab-code kaab-code","claude mcp add --transport http kaab https:\u002F\u002Fmcp.kaab.ist\u002Fmcp\n","bash","",[1037,1083,1084],{"__ignoreMap":1081},[1085,1086,1089,1093,1097,1100,1103,1106,1109],"span",{"class":1087,"line":1088},"line",1,[1085,1090,1092],{"class":1091},"sJugJ","claude",[1085,1094,1096],{"class":1095},"sx8Bj"," mcp",[1085,1098,1099],{"class":1095}," add",[1085,1101,1102],{"class":1095}," --transport",[1085,1104,1105],{"class":1095}," http",[1085,1107,1108],{"class":1095}," kaab",[1085,1110,1111],{"class":1095}," https:\u002F\u002Fmcp.kaab.ist\u002Fmcp\n",[1025,1113,1114,1117,1118,1121],{},[1042,1115,1116],{},"Codex",", in ",[1037,1119,1120],{},"~\u002F.codex\u002Fconfig.toml",":",[1076,1123,1127],{"className":1124,"code":1125,"language":1126,"meta":1081,"style":1081},"language-toml shiki shiki-themes kaab-code kaab-code kaab-code","[mcp_servers.kaab]\nurl = \"https:\u002F\u002Fmcp.kaab.ist\u002Fmcp\"\n","toml",[1037,1128,1129,1134],{"__ignoreMap":1081},[1085,1130,1131],{"class":1087,"line":1088},[1085,1132,1133],{},"[mcp_servers.kaab]\n",[1085,1135,1137],{"class":1087,"line":1136},2,[1085,1138,1139],{},"url = \"https:\u002F\u002Fmcp.kaab.ist\u002Fmcp\"\n",[1025,1141,1142,1117,1145,1121],{},[1042,1143,1144],{},"Cursor",[1037,1146,1147],{},".cursor\u002Fmcp.json",[1076,1149,1152],{"className":1150,"code":1151,"language":680,"meta":1081,"style":1081},"language-json shiki shiki-themes kaab-code kaab-code kaab-code","{ \"mcpServers\": { \"kaab\": { \"url\": \"https:\u002F\u002Fmcp.kaab.ist\u002Fmcp\" } } }\n",[1037,1153,1154],{"__ignoreMap":1081},[1085,1155,1156,1160,1164,1167,1170,1173,1175,1177,1180,1182,1186],{"class":1087,"line":1088},[1085,1157,1159],{"class":1158},"sTzsn","{ ",[1085,1161,1163],{"class":1162},"sqn18","\"mcpServers\"",[1085,1165,1121],{"class":1166},"sQm2-",[1085,1168,1169],{"class":1158}," { ",[1085,1171,1172],{"class":1162},"\"kaab\"",[1085,1174,1121],{"class":1166},[1085,1176,1169],{"class":1158},[1085,1178,1179],{"class":1162},"\"url\"",[1085,1181,1121],{"class":1166},[1085,1183,1185],{"class":1184},"suOy4"," \"https:\u002F\u002Fmcp.kaab.ist\u002Fmcp\"",[1085,1187,1188],{"class":1158}," } } }\n",[1025,1190,1191],{},"The first time the agent connects, your browser opens Kaabist's consent page.",[1047,1193,1195],{"id":1194},"consent","Consent",[1025,1197,1198],{},"The consent page opens in the panel (sign in first if you are not). It is a single card that names\nyour agent (\"… wants to use Kaabist\"), with the address it will send you back to underneath,\nand four choices:",[1200,1201,1202,1212,1226,1350],"ul",{},[1203,1204,1205,1207,1208,1211],"li",{},[1042,1206,377],{},": the agent works in one organisation (your current one is preselected), with\n",[1042,1209,1210],{},"your"," role in it. It can never do more than you can, and if you leave the organisation it stops\nat once.",[1203,1213,1214,1217,1218,1221,1222,1225],{},[1042,1215,1216],{},"Mode",": ",[1042,1219,1220],{},"Test"," (the default: free test jobs on a small daily quota, results kept 24 hours) or\n",[1042,1223,1224],{},"Live"," (real jobs that spend credits). Choosing Live shows a warning that the agent will spend\ncredits and act on real sites with your organisation's sessions.",[1203,1227,1228,1231,1232],{},[1042,1229,1230],{},"Allow the agent to",": one checkbox per scope.",[1233,1234,1235,1254],"table",{},[1236,1237,1238],"thead",{},[1239,1240,1241,1245,1248,1251],"tr",{},[1242,1243,1244],"th",{},"Checkbox",[1242,1246,1247],{},"Scope",[1242,1249,1250],{},"Lets the agent",[1242,1252,1253],{},"Ticked by default",[1255,1256,1257,1274,1289,1304,1320,1335],"tbody",{},[1239,1258,1259,1263,1268,1271],{},[1260,1261,1262],"td",{},"Read",[1260,1264,1265],{},[1037,1266,1267],{},"kaab:read",[1260,1269,1270],{},"read programs, jobs, proposals, sessions, usage and your credit balance",[1260,1272,1273],{},"yes",[1239,1275,1276,1279,1284,1287],{},[1260,1277,1278],{},"Browse",[1260,1280,1281],{},[1037,1282,1283],{},"kaab:browse",[1260,1285,1286],{},"open Kaabist browsers you can watch and take over",[1260,1288,1273],{},[1239,1290,1291,1294,1299,1302],{},[1260,1292,1293],{},"Run",[1260,1295,1296],{},[1037,1297,1298],{},"kaab:run",[1260,1300,1301],{},"save draft programs and run test jobs",[1260,1303,1273],{},[1239,1305,1306,1309,1314,1317],{},[1260,1307,1308],{},"Publish",[1260,1310,1311],{},[1037,1312,1313],{},"kaab:publish",[1260,1315,1316],{},"publish program versions and move aliases",[1260,1318,1319],{},"no",[1239,1321,1322,1325,1330,1333],{},[1260,1323,1324],{},"Approve",[1260,1326,1327],{},[1037,1328,1329],{},"kaab:approve",[1260,1331,1332],{},"approve fixes and make them permanent",[1260,1334,1319],{},[1239,1336,1337,1340,1345,1348],{},[1260,1338,1339],{},"Side effects",[1260,1341,1342],{},[1037,1343,1344],{},"kaab:side_effects",[1260,1346,1347],{},"let test runs perform steps marked as side effects (orders, sends, deletes)",[1260,1349,1319],{},[1203,1351,1352,1355],{},[1042,1353,1354],{},"Credits per agent session",": the most one agent session may spend (100 by default, at most\n10 000).",[1025,1357,1358,1361,1362,1365],{},[1042,1359,1360],{},"Allow"," sends you back to the agent; ",[1042,1363,1364],{},"Deny"," refuses. Where two-factor authentication is\nrequired, the page asks you to enrol an authenticator first. A grant never manages keys, members,\nbilling, webhooks or BYO providers, and never takes over a job.",[1025,1367,1368,1371,1372,1375],{},[1042,1369,1370],{},"Settings → Connected apps"," lists every agent you connected in a table (app, organisation, mode,\nscopes, when it connected, when it was last used) and, above it, the agent browsers open now.\n",[1042,1373,1374],{},"Revoke"," asks for confirmation and stops the agent's tokens at once.",[1047,1377,390],{"id":391},[1025,1379,1380,1381,1384,1385,1387],{},"Browser time is billed while a browser is open, in test mode too, because test mode's free quota\ncovers jobs, not browsers. Each session stops at its cap. The ",[1037,1382,1383],{},"estimate"," tool tells the agent what\na job and a browser minute cost; ",[1037,1386,391],{}," shows your balance and what the session spent.",[1047,1389,1391],{"id":1390},"watching-and-taking-over","Watching and taking over",[1025,1393,1394,1395,1398,1399,1402,1403,1406,1407,1410,1411,1413,1414,1417,1418,1421],{},"Every browser an agent opens appears in the panel's top bar, under the ",[1042,1396,1397],{},"N live"," button that lists\nopen browsers as \"Agent browser\", and on ",[1042,1400,1401],{},"Connected apps",". Open it to watch: the page shows the\nbrowser on the left with its address and connection status, and the banner \"Agent is driving\" with the line \"You\nare watching\". A rail on the right shows what has been recorded so far, with ",[1042,1404,1405],{},"Take control"," and\n",[1042,1408,1409],{},"Close the browser",". ",[1042,1412,1405],{}," hands the browser to you; the agent's browser tools then\nanswer ",[1037,1415,1416],{},"controlled_by_person"," until you press ",[1042,1419,1420],{},"Return control",". What you do while in control is\nrecorded like the agent's actions.",[1047,1423,1425],{"id":1424},"without-oauth","Without OAuth",[1025,1427,1428,1429,1432,1433,1436,1437,1440,1441,1444],{},"An agent that cannot run the OAuth flow can send an API key instead:\n",[1037,1430,1431],{},"Authorization: Bearer sk_test_…",". The key's own mode and scopes apply (",[1037,1434,1435],{},"read"," reads; ",[1037,1438,1439],{},"run"," also\nbrowses, runs, publishes and approves; ",[1037,1442,1443],{},"admin"," adds side effects), with a 100-credit cap per\nsession.",[1047,1446,1448],{"id":1447},"tools","Tools",[1233,1450,1451,1461],{},[1236,1452,1453],{},[1239,1454,1455,1458],{},[1242,1456,1457],{},"Tool",[1242,1459,1460],{},"Does",[1255,1462,1463,1477,1518,1528,1538,1551,1561,1571,1581,1597,1607,1617,1636,1649,1659],{},[1239,1464,1465,1470],{},[1260,1466,1467],{},[1037,1468,1469],{},"browser_open",[1260,1471,1472,1473,1476],{},"open a Kaabist browser on a URL; returns its ",[1037,1474,1475],{},"browser_id",", the watch link and a page view",[1239,1478,1479,1503],{},[1260,1480,1481,1484,1485,1484,1488,1484,1491,1484,1494,1484,1497,1484,1500],{},[1037,1482,1483],{},"browser_navigate",", ",[1037,1486,1487],{},"browser_click",[1037,1489,1490],{},"browser_fill",[1037,1492,1493],{},"browser_select",[1037,1495,1496],{},"browser_scroll",[1037,1498,1499],{},"browser_press",[1037,1501,1502],{},"browser_wait",[1260,1504,1505,1506,1509,1510,1513,1514,1517],{},"act on the page (targets are page-view refs like ",[1037,1507,1508],{},"e12"," or DSL targets); each answers what it did (",[1037,1511,1512],{},"effects",") and what still covers the page (",[1037,1515,1516],{},"obstacles_after",")",[1239,1519,1520,1525],{},[1260,1521,1522],{},[1037,1523,1524],{},"browser_page_view",[1260,1526,1527],{},"the condensed page: obstacles, actions, outline, landmarks, forms, lists, text elements, JSON paths",[1239,1529,1530,1535],{},[1260,1531,1532],{},[1037,1533,1534],{},"browser_screenshot",[1260,1536,1537],{},"a JPEG of the viewport, or of a whole long page as tiles",[1239,1539,1540,1548],{},[1260,1541,1542,1484,1545],{},[1037,1543,1544],{},"browser_evaluate",[1037,1546,1547],{},"browser_download",[1260,1549,1550],{},"run JavaScript in the page, or download a file into the browser's artifacts; both recorded as steps",[1239,1552,1553,1558],{},[1260,1554,1555],{},[1037,1556,1557],{},"browser_close",[1260,1559,1560],{},"close the browser and settle what it cost",[1239,1562,1563,1568],{},[1260,1564,1565],{},[1037,1566,1567],{},"browser_to_program",[1260,1569,1570],{},"turn what was done into a draft program",[1239,1572,1573,1578],{},[1260,1574,1575],{},[1037,1576,1577],{},"try_extract",[1260,1579,1580],{},"run an extract on the live page (or on a URL, as a job)",[1239,1582,1583,1594],{},[1260,1584,1585,1484,1588,1484,1591],{},[1037,1586,1587],{},"lint_program",[1037,1589,1590],{},"push_program",[1037,1592,1593],{},"diff_versions",[1260,1595,1596],{},"check, save (a draft unless allowed to publish) and compare versions",[1239,1598,1599,1604],{},[1260,1600,1601],{},[1037,1602,1603],{},"test_program",[1260,1605,1606],{},"run a version as a job: a dry run unless told otherwise",[1239,1608,1609,1614],{},[1260,1610,1611],{},[1037,1612,1613],{},"answer_input",[1260,1615,1616],{},"answer a job waiting for input (a one-time code)",[1239,1618,1619,1633],{},[1260,1620,1621,1484,1624,1484,1627,1484,1630],{},[1037,1622,1623],{},"get_job",[1037,1625,1626],{},"list_jobs",[1037,1628,1629],{},"cancel_job",[1037,1631,1632],{},"resume_job",[1260,1634,1635],{},"follow jobs, cancel them and act on parked ones; a resume within minutes of the park carries on in the same page and keeps the data and files from before it",[1239,1637,1638,1646],{},[1260,1639,1640,1484,1643],{},[1037,1641,1642],{},"list_proposals",[1037,1644,1645],{},"get_proposal",[1260,1647,1648],{},"read healing proposals",[1239,1650,1651,1656],{},[1260,1652,1653],{},[1037,1654,1655],{},"get_artifact",[1260,1657,1658],{},"a file a job or a browser kept: a link, and the file itself up to 1 MB",[1239,1660,1661,1667],{},[1260,1662,1663,1484,1665],{},[1037,1664,1383],{},[1037,1666,391],{},[1260,1668,1669],{},"prices and balance",[1025,1671,1672,1673,1484,1676,1484,1679,1682,1683,1686,1687,1689,1690,1693,1694,1686,1697,1700],{},"Resources: ",[1037,1674,1675],{},"kaab:\u002F\u002Fdocs\u002Fdsl-quickref",[1037,1677,1678],{},"kaab:\u002F\u002Fschemas\u002Fprogram-1.json",[1037,1680,1681],{},"kaab:\u002F\u002Fprograms\u002F{name}",".\nPrompts: ",[1037,1684,1685],{},"build_program_for_site"," (a ",[1037,1688,610],{}," and a ",[1037,1691,1692],{},"goal",") and ",[1037,1695,1696],{},"fix_failing_job",[1037,1698,1699],{},"job_id",").",[1047,1702,1704],{"id":1703},"reading-a-page","Reading a page",[1025,1706,1707],{},"A page view leads with what an agent needs before it acts:",[1200,1709,1710,1745,1775],{},[1203,1711,1712,1716,1717,1720,1721,1724,1725,1728,1729,1732,1733,1736,1737,1740,1741,1744],{},[1042,1713,1714],{},[1037,1715,51],{},": what covers the page, such as a consent banner, a dialog or a tour. Each says its\n",[1037,1718,1719],{},"kind",", the ",[1037,1722,1723],{},"vendor"," when Kaabist recognises the framework, whether it ",[1037,1726,1727],{},"covers"," the whole\nviewport or part of it, and up to three ",[1037,1730,1731],{},"dismiss"," controls (",[1037,1734,1735],{},"reject"," first, then ",[1037,1738,1739],{},"close",", then\n",[1037,1742,1743],{},"accept",") by ref. Kaabist never dismisses anything for the agent; clicking one of those refs is\nrecorded like any other click.",[1203,1746,1747,1751,1752,1217,1755,1758,1759,1484,1762,1484,1765,1484,1768,1771,1772,1774],{},[1042,1748,1749],{},[1037,1750,540],{},": every visible link and button, in page order, with where it sits (",[1037,1753,1754],{},"in",[1037,1756,1757],{},"header",",\n",[1037,1760,1761],{},"nav",[1037,1763,1764],{},"main",[1037,1766,1767],{},"footer",[1037,1769,1770],{},"dialog",") and up to three locator candidates. A button repeated with the\nsame text and link is listed once with a ",[1037,1773,624],{},".",[1203,1776,1777,1778,1781,1782,1484,1785,1788,1789,1792,1793,1796,1797,1800,1801,1804,1805,1808],{},"Then the ",[1037,1779,1780],{},"outline"," (headings h1 to h3), ",[1037,1783,1784],{},"landmarks",[1037,1786,1787],{},"forms"," (their fields, never their values),\nrepeating ",[1037,1790,1791],{},"lists"," with sample texts, other text ",[1037,1794,1795],{},"elements",", and the paths found in\n",[1037,1798,1799],{},"embedded_json"," (such as ",[1037,1802,1803],{},"ld+json"," blocks) and ",[1037,1806,1807],{},"network_json"," (JSON responses the page loaded).",[1025,1810,1811,1812,1815,1816,1819,1820,1822],{},"A view never exceeds its byte budget (",[1037,1813,1814],{},"max_bytes",", 20 000 by default); ",[1037,1817,1818],{},"truncated"," names the\nsections that were shortened, the text elements first, the obstacles last. Refs such as ",[1037,1821,1508],{}," are\nvalid until the next page view.",[1025,1824,1825,1826,1829,1830,1832,1833,1836,1837,1840,1841,1844,1845,1774],{},"Every action answers ",[1037,1827,1828],{},"changed"," and ",[1037,1831,1512],{}," (whether it navigated, added or removed nodes,\nscrolled, cleared an obstacle, or opened or closed a dialog), so the agent rarely needs a screenshot\nto know what happened. A long page is read with ",[1037,1834,1835],{},"browser_scroll { by: \"page\" }"," until ",[1037,1838,1839],{},"at_end","\n(these relative scrolls are not recorded), and seen with ",[1037,1842,1843],{},"browser_screenshot { full_page: true }",":\nthe page is revealed first, then returned as tiles up to 1 600 px tall, six per call, continued with\n",[1037,1846,1847],{},"from_tile",[1047,1849,1851],{"id":1850},"worked-example","Worked example",[1025,1853,1854,1855,1858,1859,1861,1862],{},"Take the home page of ",[1037,1856,1857],{},"https:\u002F\u002Fapp.example.com",", a long marketing page: a sticky header, 45\nheadings, two large ",[1037,1860,1803],{}," blocks, a carousel, lazy images and a Cookiebot consent banner over\nthe bottom of the screen. Ask your agent: ",[1863,1864,1865,1866,1870],"em",{},"\"Open ",[1029,1867,1868],{"href":1868,"rel":1869},"https:\u002F\u002Fapp.example.com\u002F",[1033]," and find where Start\nbuilding leads.\"",[1025,1872,1873,1876,1877,1879,1880,1882,1883,1484,1886,1758,1889,1892,1893,1895,1896,1898,1899,1902,1903,1906,1907,1898,1910,1913,1914,1916,1917,1919],{},[1042,1874,1875],{},"The page view."," ",[1037,1878,1469],{}," answers with a view whose title is \"Example Cloud: cloud runtime\nfor AI agents\" and whose ",[1037,1881,51],{}," holds one entry: ",[1037,1884,1885],{},"kind: \"consent\"",[1037,1887,1888],{},"vendor: \"cookiebot\"",[1037,1890,1891],{},"covers: \"partial\"",", with a ",[1037,1894,1735],{}," control labelled \"Reject all\". Its ref also appears in\n",[1037,1897,540],{}," with ",[1037,1900,1901],{},"in: \"dialog\"",", next to \"Show details\". The other actions read in page order: the\nheader's links (Docs, Pricing, Blog and Changelog ",[1037,1904,1905],{},"in: \"nav\"",", Sign in), then \"Start building\"\n",[1037,1908,1909],{},"in: \"main\"",[1037,1911,1912],{},"count: 2"," (the page shows it twice), \"Talk to an engineer\", the carousel's\n\"Previous slide\" and \"Next slide\" buttons, and the footer's links. The outline keeps 40 of the 45\nheadings, every h1 and h2 and the first h3s, and the ",[1037,1915,1803],{}," paths are cut to a sample; both are\nnamed in ",[1037,1918,1818],{},", so the agent knows there is more.",[1025,1921,1922,1925,1926,1929,1930,1932,1933,1935,1936,1939,1940,1943,1944,1898,1947,1950],{},[1042,1923,1924],{},"Acting on it."," The agent clicks the \"Reject all\" ref. The answer says ",[1037,1927,1928],{},"obstacle_cleared: true","\nand ",[1037,1931,1516],{}," is empty. It scrolls by page until ",[1037,1934,1839],{}," to read every heading, then clicks\n\"Start building\": ",[1037,1937,1938],{},"effects.navigated"," is true and the URL ends in ",[1037,1941,1942],{},"\u002Fstart",". A click on the\ncarousel's \"Next slide\" would instead answer ",[1037,1945,1946],{},"changed: true",[1037,1948,1949],{},"navigated: false",", because the\nslides move inside the page.",[1025,1952,1953,1956,1957,1960,1961,1963,1964,1966,1967,1484,1969,1829,1971,1973,1974,1774],{},[1042,1954,1955],{},"Building a program."," On a page with data, such as ",[1037,1958,1959],{},"https:\u002F\u002Fshop.example.com\u002Fp\u002F1",", the\nagent continues with ",[1037,1962,1577],{}," to check fields against the live page, ",[1037,1965,1567],{}," to\nturn its steps into a draft, ",[1037,1968,1587],{},[1037,1970,1590],{},[1037,1972,1603],{},", which runs the\ndraft as a dry run. You see the browser in the panel's top bar the whole time, and the draft under\n",[1042,1975,223],{},[1025,1977,1978,1979,1981],{},"To see which tools a bearer may call without an MCP client, open a session and list them. The\nlist depends on the scopes: a ",[1037,1980,1435],{}," key gets the reading tools only.",[1983,1984,1985],"code-group",{},[1076,1986,1991],{"className":1987,"code":1988,"filename":1989,"language":1990,"meta":1081,"style":1081},"language-ts shiki shiki-themes kaab-code kaab-code kaab-code","const headers = {\n  authorization: `Bearer ${apiKey}`, \u002F\u002F an sk_ key, or an OAuth access token\n  \"content-type\": \"application\u002Fjson\",\n  accept: \"application\u002Fjson, text\u002Fevent-stream\",\n};\nconst rpc = (id: number, method: string, params: object = {}) =>\n  JSON.stringify({ jsonrpc: \"2.0\", id, method, params });\n\n\u002F\u002F 1. initialize opens a session; its id comes back in Mcp-Session-Id.\nconst init = await fetch(endpoint, {\n  method: \"POST\",\n  headers,\n  body: rpc(1, \"initialize\", {\n    protocolVersion: \"2025-11-25\",\n    capabilities: {},\n    clientInfo: { name: \"kaab-example\", version: \"1.0.0\" },\n  }),\n});\nconst session = init.headers.get(\"mcp-session-id\") ?? \"\";\nconst hello = await readMessage(init);\nconsole.log(`connected to ${hello.result?.serverInfo?.name}`);\n\nconst sessionHeaders = { ...headers, \"mcp-session-id\": session };\nawait fetch(endpoint, {\n  method: \"POST\",\n  headers: sessionHeaders,\n  body: JSON.stringify({ jsonrpc: \"2.0\", method: \"notifications\u002Finitialized\" }),\n});\n\n\u002F\u002F 2. tools\u002Flist: only the tools this bearer's scopes allow.\nconst listed = await readMessage(\n  await fetch(endpoint, { method: \"POST\", headers: sessionHeaders, body: rpc(2, \"tools\u002Flist\") }),\n);\nfor (const tool of listed.result?.tools ?? []) console.log(`${tool.name}`);\n","TypeScript","ts",[1037,1992,1993,2008,2037,2050,2063,2069,2115,2146,2153,2159,2182,2195,2203,2228,2241,2254,2285,2293,2299,2336,2354,2394,2399,2426,2440,2451,2462,2494,2499,2504,2510,2527,2578,2583],{"__ignoreMap":1081},[1085,1994,1995,1998,2002,2005],{"class":1087,"line":1088},[1085,1996,1997],{"class":1162},"const",[1085,1999,2001],{"class":2000},"sHJIl"," headers",[1085,2003,2004],{"class":1162}," =",[1085,2006,2007],{"class":1158}," {\n",[1085,2009,2010,2013,2015,2018,2021,2024,2027,2030,2033],{"class":1087,"line":1136},[1085,2011,2012],{"class":1158},"  authorization",[1085,2014,1121],{"class":1162},[1085,2016,2017],{"class":1184}," `Bearer ",[1085,2019,2020],{"class":1162},"${",[1085,2022,2023],{"class":1158},"apiKey",[1085,2025,2026],{"class":1162},"}",[1085,2028,2029],{"class":1184},"`",[1085,2031,2032],{"class":1166},",",[1085,2034,2036],{"class":2035},"sKog0"," \u002F\u002F an sk_ key, or an OAuth access token\n",[1085,2038,2040,2043,2045,2048],{"class":1087,"line":2039},3,[1085,2041,2042],{"class":1184},"  \"content-type\"",[1085,2044,1121],{"class":1162},[1085,2046,2047],{"class":1184}," \"application\u002Fjson\"",[1085,2049,1758],{"class":1166},[1085,2051,2053,2056,2058,2061],{"class":1087,"line":2052},4,[1085,2054,2055],{"class":1158},"  accept",[1085,2057,1121],{"class":1162},[1085,2059,2060],{"class":1184}," \"application\u002Fjson, text\u002Fevent-stream\"",[1085,2062,1758],{"class":1166},[1085,2064,2066],{"class":1087,"line":2065},5,[1085,2067,2068],{"class":1158},"};\n",[1085,2070,2072,2074,2077,2079,2082,2084,2087,2089,2092,2094,2097,2099,2102,2104,2107,2109,2112],{"class":1087,"line":2071},6,[1085,2073,1997],{"class":1162},[1085,2075,2076],{"class":1091}," rpc",[1085,2078,2004],{"class":1162},[1085,2080,2081],{"class":1158}," (id",[1085,2083,1121],{"class":1162},[1085,2085,2086],{"class":2000}," number",[1085,2088,2032],{"class":1166},[1085,2090,2091],{"class":1158}," method",[1085,2093,1121],{"class":1162},[1085,2095,2096],{"class":2000}," string",[1085,2098,2032],{"class":1166},[1085,2100,2101],{"class":1158}," params",[1085,2103,1121],{"class":1162},[1085,2105,2106],{"class":2000}," object",[1085,2108,2004],{"class":1162},[1085,2110,2111],{"class":1158}," {}) ",[1085,2113,2114],{"class":1162},"=>\n",[1085,2116,2118,2121,2124,2127,2129,2132,2134,2137,2139,2141,2143],{"class":1087,"line":2117},7,[1085,2119,2120],{"class":2000},"  JSON",[1085,2122,2123],{"class":1091},".stringify",[1085,2125,2126],{"class":1158},"({ jsonrpc",[1085,2128,1121],{"class":1162},[1085,2130,2131],{"class":1184}," \"2.0\"",[1085,2133,2032],{"class":1166},[1085,2135,2136],{"class":1158}," id",[1085,2138,2032],{"class":1166},[1085,2140,2091],{"class":1158},[1085,2142,2032],{"class":1166},[1085,2144,2145],{"class":1158}," params });\n",[1085,2147,2149],{"class":1087,"line":2148},8,[1085,2150,2152],{"emptyLinePlaceholder":2151},true,"\n",[1085,2154,2156],{"class":1087,"line":2155},9,[1085,2157,2158],{"class":2035},"\u002F\u002F 1. initialize opens a session; its id comes back in Mcp-Session-Id.\n",[1085,2160,2162,2164,2167,2169,2172,2175,2178,2180],{"class":1087,"line":2161},10,[1085,2163,1997],{"class":1162},[1085,2165,2166],{"class":2000}," init",[1085,2168,2004],{"class":1162},[1085,2170,2171],{"class":1162}," await",[1085,2173,2174],{"class":1091}," fetch",[1085,2176,2177],{"class":1158},"(endpoint",[1085,2179,2032],{"class":1166},[1085,2181,2007],{"class":1158},[1085,2183,2185,2188,2190,2193],{"class":1087,"line":2184},11,[1085,2186,2187],{"class":1158},"  method",[1085,2189,1121],{"class":1162},[1085,2191,2192],{"class":1184}," \"POST\"",[1085,2194,1758],{"class":1166},[1085,2196,2198,2201],{"class":1087,"line":2197},12,[1085,2199,2200],{"class":1158},"  headers",[1085,2202,1758],{"class":1166},[1085,2204,2206,2209,2211,2213,2216,2219,2221,2224,2226],{"class":1087,"line":2205},13,[1085,2207,2208],{"class":1158},"  body",[1085,2210,1121],{"class":1162},[1085,2212,2076],{"class":1091},[1085,2214,2215],{"class":1158},"(",[1085,2217,2218],{"class":2000},"1",[1085,2220,2032],{"class":1166},[1085,2222,2223],{"class":1184}," \"initialize\"",[1085,2225,2032],{"class":1166},[1085,2227,2007],{"class":1158},[1085,2229,2231,2234,2236,2239],{"class":1087,"line":2230},14,[1085,2232,2233],{"class":1158},"    protocolVersion",[1085,2235,1121],{"class":1162},[1085,2237,2238],{"class":1184}," \"2025-11-25\"",[1085,2240,1758],{"class":1166},[1085,2242,2244,2247,2249,2252],{"class":1087,"line":2243},15,[1085,2245,2246],{"class":1158},"    capabilities",[1085,2248,1121],{"class":1162},[1085,2250,2251],{"class":1158}," {}",[1085,2253,1758],{"class":1166},[1085,2255,2257,2260,2262,2265,2267,2270,2272,2275,2277,2280,2283],{"class":1087,"line":2256},16,[1085,2258,2259],{"class":1158},"    clientInfo",[1085,2261,1121],{"class":1162},[1085,2263,2264],{"class":1158}," { name",[1085,2266,1121],{"class":1162},[1085,2268,2269],{"class":1184}," \"kaab-example\"",[1085,2271,2032],{"class":1166},[1085,2273,2274],{"class":1158}," version",[1085,2276,1121],{"class":1162},[1085,2278,2279],{"class":1184}," \"1.0.0\"",[1085,2281,2282],{"class":1158}," }",[1085,2284,1758],{"class":1166},[1085,2286,2288,2291],{"class":1087,"line":2287},17,[1085,2289,2290],{"class":1158},"  })",[1085,2292,1758],{"class":1166},[1085,2294,2296],{"class":1087,"line":2295},18,[1085,2297,2298],{"class":1158},"});\n",[1085,2300,2302,2304,2307,2309,2311,2313,2316,2319,2321,2324,2327,2330,2333],{"class":1087,"line":2301},19,[1085,2303,1997],{"class":1162},[1085,2305,2306],{"class":2000}," session",[1085,2308,2004],{"class":1162},[1085,2310,2166],{"class":2000},[1085,2312,1774],{"class":1091},[1085,2314,2315],{"class":2000},"headers",[1085,2317,2318],{"class":1091},".get",[1085,2320,2215],{"class":1158},[1085,2322,2323],{"class":1184},"\"mcp-session-id\"",[1085,2325,2326],{"class":1158},") ",[1085,2328,2329],{"class":1162},"??",[1085,2331,2332],{"class":1184}," \"\"",[1085,2334,2335],{"class":1158},";\n",[1085,2337,2339,2341,2344,2346,2348,2351],{"class":1087,"line":2338},20,[1085,2340,1997],{"class":1162},[1085,2342,2343],{"class":2000}," hello",[1085,2345,2004],{"class":1162},[1085,2347,2171],{"class":1162},[1085,2349,2350],{"class":1091}," readMessage",[1085,2352,2353],{"class":1158},"(init);\n",[1085,2355,2357,2360,2363,2365,2368,2370,2373,2375,2378,2381,2384,2387,2389,2391],{"class":1087,"line":2356},21,[1085,2358,2359],{"class":2000},"console",[1085,2361,2362],{"class":1091},".log",[1085,2364,2215],{"class":1158},[1085,2366,2367],{"class":1184},"`connected to ",[1085,2369,2020],{"class":1162},[1085,2371,2372],{"class":2000},"hello",[1085,2374,1774],{"class":1158},[1085,2376,2377],{"class":2000},"result",[1085,2379,2380],{"class":1158},"?.",[1085,2382,2383],{"class":2000},"serverInfo",[1085,2385,2386],{"class":1158},"?.name",[1085,2388,2026],{"class":1162},[1085,2390,2029],{"class":1184},[1085,2392,2393],{"class":1158},");\n",[1085,2395,2397],{"class":1087,"line":2396},22,[1085,2398,2152],{"emptyLinePlaceholder":2151},[1085,2400,2402,2404,2407,2409,2411,2414,2416,2418,2421,2423],{"class":1087,"line":2401},23,[1085,2403,1997],{"class":1162},[1085,2405,2406],{"class":2000}," sessionHeaders",[1085,2408,2004],{"class":1162},[1085,2410,1169],{"class":1158},[1085,2412,2413],{"class":1162},"...",[1085,2415,2315],{"class":1158},[1085,2417,2032],{"class":1166},[1085,2419,2420],{"class":1184}," \"mcp-session-id\"",[1085,2422,1121],{"class":1162},[1085,2424,2425],{"class":1158}," session };\n",[1085,2427,2429,2432,2434,2436,2438],{"class":1087,"line":2428},24,[1085,2430,2431],{"class":1162},"await",[1085,2433,2174],{"class":1091},[1085,2435,2177],{"class":1158},[1085,2437,2032],{"class":1166},[1085,2439,2007],{"class":1158},[1085,2441,2443,2445,2447,2449],{"class":1087,"line":2442},25,[1085,2444,2187],{"class":1158},[1085,2446,1121],{"class":1162},[1085,2448,2192],{"class":1184},[1085,2450,1758],{"class":1166},[1085,2452,2454,2456,2458,2460],{"class":1087,"line":2453},26,[1085,2455,2200],{"class":1158},[1085,2457,1121],{"class":1162},[1085,2459,2406],{"class":1158},[1085,2461,1758],{"class":1166},[1085,2463,2465,2467,2469,2472,2474,2476,2478,2480,2482,2484,2486,2489,2492],{"class":1087,"line":2464},27,[1085,2466,2208],{"class":1158},[1085,2468,1121],{"class":1162},[1085,2470,2471],{"class":2000}," JSON",[1085,2473,2123],{"class":1091},[1085,2475,2126],{"class":1158},[1085,2477,1121],{"class":1162},[1085,2479,2131],{"class":1184},[1085,2481,2032],{"class":1166},[1085,2483,2091],{"class":1158},[1085,2485,1121],{"class":1162},[1085,2487,2488],{"class":1184}," \"notifications\u002Finitialized\"",[1085,2490,2491],{"class":1158}," })",[1085,2493,1758],{"class":1166},[1085,2495,2497],{"class":1087,"line":2496},28,[1085,2498,2298],{"class":1158},[1085,2500,2502],{"class":1087,"line":2501},29,[1085,2503,2152],{"emptyLinePlaceholder":2151},[1085,2505,2507],{"class":1087,"line":2506},30,[1085,2508,2509],{"class":2035},"\u002F\u002F 2. tools\u002Flist: only the tools this bearer's scopes allow.\n",[1085,2511,2513,2515,2518,2520,2522,2524],{"class":1087,"line":2512},31,[1085,2514,1997],{"class":1162},[1085,2516,2517],{"class":2000}," listed",[1085,2519,2004],{"class":1162},[1085,2521,2171],{"class":1162},[1085,2523,2350],{"class":1091},[1085,2525,2526],{"class":1158},"(\n",[1085,2528,2530,2533,2535,2537,2539,2542,2544,2546,2548,2550,2552,2554,2556,2559,2561,2563,2565,2568,2570,2573,2576],{"class":1087,"line":2529},32,[1085,2531,2532],{"class":1162},"  await",[1085,2534,2174],{"class":1091},[1085,2536,2177],{"class":1158},[1085,2538,2032],{"class":1166},[1085,2540,2541],{"class":1158}," { method",[1085,2543,1121],{"class":1162},[1085,2545,2192],{"class":1184},[1085,2547,2032],{"class":1166},[1085,2549,2001],{"class":1158},[1085,2551,1121],{"class":1162},[1085,2553,2406],{"class":1158},[1085,2555,2032],{"class":1166},[1085,2557,2558],{"class":1158}," body",[1085,2560,1121],{"class":1162},[1085,2562,2076],{"class":1091},[1085,2564,2215],{"class":1158},[1085,2566,2567],{"class":2000},"2",[1085,2569,2032],{"class":1166},[1085,2571,2572],{"class":1184}," \"tools\u002Flist\"",[1085,2574,2575],{"class":1158},") })",[1085,2577,1758],{"class":1166},[1085,2579,2581],{"class":1087,"line":2580},33,[1085,2582,2393],{"class":1158},[1085,2584,2586,2589,2592,2594,2597,2600,2602,2604,2606,2609,2611,2614,2616,2618,2620,2622,2624,2627,2630,2632,2634],{"class":1087,"line":2585},34,[1085,2587,2588],{"class":1162},"for",[1085,2590,2591],{"class":1158}," (",[1085,2593,1997],{"class":1162},[1085,2595,2596],{"class":2000}," tool",[1085,2598,2599],{"class":1162}," of",[1085,2601,2517],{"class":2000},[1085,2603,1774],{"class":1158},[1085,2605,2377],{"class":2000},[1085,2607,2608],{"class":1158},"?.tools ",[1085,2610,2329],{"class":1162},[1085,2612,2613],{"class":1158}," []) ",[1085,2615,2359],{"class":2000},[1085,2617,2362],{"class":1091},[1085,2619,2215],{"class":1158},[1085,2621,2029],{"class":1184},[1085,2623,2020],{"class":1162},[1085,2625,2626],{"class":2000},"tool",[1085,2628,2629],{"class":1158},".name",[1085,2631,2026],{"class":1162},[1085,2633,2029],{"class":1184},[1085,2635,2393],{"class":1158},[1047,2637,2639],{"id":2638},"pitfalls","Pitfalls",[1200,2641,2642,2651,2660,2666,2672],{},[1203,2643,2644,2647,2648,2650],{},[1042,2645,2646],{},"Live mode by accident."," Choose ",[1042,2649,1220],{}," on the consent page unless the agent must do real\nwork; live browsers and jobs spend real credits.",[1203,2652,2653,2659],{},[1042,2654,2655,2656,2658],{},"Giving ",[1037,2657,1344],{}," to explore."," A test run with it places real orders and sends real\nmessages. Leave it off until a program's side effects are what you want.",[1203,2661,2662,2665],{},[1042,2663,2664],{},"Expecting the agent to dismiss banners on its own."," Kaabist reports obstacles and their\ncontrols; the agent has to click one.",[1203,2667,2668,2671],{},[1042,2669,2670],{},"Stale refs."," A ref is valid until the next page view; after a navigation, read the page again.",[1203,2673,2674,2677],{},[1042,2675,2676],{},"Hitting the credit cap mid-task."," The session stops at its cap. Raise it on the consent page\nwhen you reconnect, or close browsers the agent no longer needs.",[1047,2679,155],{"id":2680},"reference",[1200,2682,2683,2693,2703],{},[1203,2684,2685,1484,2689],{},[1029,2686,2688],{"href":2687},"\u002Freference\u002Fapi\u002Fjobs\u002Fcreate-job","Create a job",[1029,2690,2692],{"href":2691},"\u002Freference\u002Fapi\u002Fprograms\u002Flint-program","lint a program",[1203,2694,2695,1829,2699],{},[1029,2696,2698],{"href":2697},"\u002Freference\u002Fcodes#key-scopes","Key scopes",[1029,2700,2702],{"href":2701},"\u002Freference\u002Fcodes#errors","error codes",[1203,2704,2705],{},[1029,2706,2707],{"href":525},"DSL reference",[2709,2710,2711],"style",{},"html pre.shiki code .sJugJ, html code.shiki .sJugJ{--shiki-light:var(--kaab-code-token-function);--shiki-default:var(--kaab-code-token-function);--shiki-dark:var(--kaab-code-token-function)}html pre.shiki code .sx8Bj, html code.shiki .sx8Bj{--shiki-light:var(--kaab-code-token-string);--shiki-default:var(--kaab-code-token-string);--shiki-dark:var(--kaab-code-token-string)}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sTzsn, html code.shiki .sTzsn{--shiki-light:var(--kaab-code-foreground);--shiki-default:var(--kaab-code-foreground);--shiki-dark:var(--kaab-code-foreground)}html pre.shiki code .sqn18, html code.shiki .sqn18{--shiki-light:var(--kaab-code-token-keyword);--shiki-default:var(--kaab-code-token-keyword);--shiki-dark:var(--kaab-code-token-keyword)}html pre.shiki code .sQm2-, html code.shiki .sQm2-{--shiki-light:var(--kaab-code-token-punctuation);--shiki-default:var(--kaab-code-token-punctuation);--shiki-dark:var(--kaab-code-token-punctuation)}html pre.shiki code .suOy4, html code.shiki .suOy4{--shiki-light:var(--kaab-code-token-string-expression);--shiki-default:var(--kaab-code-token-string-expression);--shiki-dark:var(--kaab-code-token-string-expression)}html pre.shiki code .sHJIl, html code.shiki .sHJIl{--shiki-light:var(--kaab-code-token-constant);--shiki-default:var(--kaab-code-token-constant);--shiki-dark:var(--kaab-code-token-constant)}html pre.shiki code .sKog0, html code.shiki .sKog0{--shiki-light:var(--kaab-code-token-comment);--shiki-default:var(--kaab-code-token-comment);--shiki-dark:var(--kaab-code-token-comment)}",{"title":1081,"searchDepth":2039,"depth":2039,"links":2713},[2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724],{"id":1049,"depth":1136,"text":1050},{"id":1068,"depth":1136,"text":1069},{"id":1194,"depth":1136,"text":1195},{"id":391,"depth":1136,"text":390},{"id":1390,"depth":1136,"text":1391},{"id":1424,"depth":1136,"text":1425},{"id":1447,"depth":1136,"text":1448},{"id":1703,"depth":1136,"text":1704},{"id":1850,"depth":1136,"text":1851},{"id":2638,"depth":1136,"text":2639},{"id":2680,"depth":1136,"text":155},false,null,"Connect Claude Code, Codex, Cursor or any MCP client to Kaabist and let it build, test and maintain programs in a real Kaabist browser.","md",{},"\u002Fguides\u002Fmcp",{"title":131,"description":2727},"3.guides\u002F15.mcp","Fl1SwGz5fcGiikyUWKAylgFWd44DLerc5pRKxSaqBfo",[2735,2739],{"title":128,"path":2736,"stem":2737,"description":2738,"children":-1},"\u002Fguides\u002Fcli","3.guides\u002F14.cli","Run jobs, push and lint programs, review proposals and manage schedules and webhooks from a terminal.",{"title":27,"path":135,"stem":2740,"description":2741,"children":-1},"4.panel\u002F01.index","Signing in, organisations, members, API keys, programs, jobs, sessions, schedules, webhooks, BYO providers, usage, billing and the audit log at app.kaab.ist.",1793593409286]