[{"data":1,"prerenderedAt":272},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fwebmcp":3,"docs-nav":163},{"id":4,"title":5,"body":6,"description":154,"extension":155,"meta":156,"navigation":157,"order":158,"path":159,"seo":160,"stem":161,"__hash__":162},"docs\u002Fdocs\u002F6.webmcp.md","WebMCP",{"type":7,"value":8,"toc":149},"minimark",[9,19,24,39,91,104,108,111,115,145],[10,11,12,18],"p",{},[13,14,5],"a",{"href":15,"rel":16},"https:\u002F\u002Fwebmachinelearning.github.io\u002Fwebmcp\u002F",[17],"nofollow"," is a W3C Web Machine\nLearning Community Group draft that lets a website declare callable tools —\nwith descriptions, JSON Schema inputs, and annotations for behavior like\nread-only, untrusted, or consequential actions — so an agent can discover\ncapabilities before interpreting the page UI at all.",[20,21,23],"h2",{"id":22},"what-jawb-implements-today","What jawb implements today",[10,25,26,30,31,34,35,38],{},[27,28,29],"code",{},"jawb-core","'s ",[27,32,33],{},"tools"," crate looks for a\n",[27,36,37],{},"\u003Cscript type=\"application\u002Fwebmcp+json\">"," tag and parses the tool list it\ndeclares:",[40,41,46],"pre",{"className":42,"code":43,"language":44,"meta":45,"style":45},"language-html shiki shiki-themes github-light github-dark","\u003Cscript type=\"application\u002Fwebmcp+json\">\n  { \"tools\": [{ \"name\": \"book_service\", \"description\": \"Book a service appointment\" }] }\n\u003C\u002Fscript>\n","html","",[27,47,48,75,81],{"__ignoreMap":45},[49,50,53,57,61,65,68,72],"span",{"class":51,"line":52},"line",1,[49,54,56],{"class":55},"sVt8B","\u003C",[49,58,60],{"class":59},"s9eBZ","script",[49,62,64],{"class":63},"sScJk"," type",[49,66,67],{"class":55},"=",[49,69,71],{"class":70},"sZZnC","\"application\u002Fwebmcp+json\"",[49,73,74],{"class":55},">\n",[49,76,78],{"class":51,"line":77},2,[49,79,80],{"class":55},"  { \"tools\": [{ \"name\": \"book_service\", \"description\": \"Book a service appointment\" }] }\n",[49,82,84,87,89],{"class":51,"line":83},3,[49,85,86],{"class":55},"\u003C\u002F",[49,88,60],{"class":59},[49,90,74],{"class":55},[10,92,93,94,98,99,103],{},"This is a ",[95,96,97],"strong",{},"discovery prototype only"," — jawb parses the declared list, it\ndoes not invoke tools yet. See the ",[13,100,102],{"href":101},"\u002Fdocs\u002Fsdk\u002Fwebsite-sdk","website SDK"," for\na helper that renders this tag for you.",[20,105,107],{"id":106},"why-tools-first","Why tools first",[10,109,110],{},"jawb's direction is to reach for the cheapest route that works: a tool a\nsite declares first, a compact semantic observation of the page second,\nand full visual rendering only when a task genuinely needs pixels. That\nrouting is planned, not built. Today the command you run picks the route,\nand jawb lists declared tools without calling them. WebMCP is how jawb\nwill find the tool route on ordinary websites: no rendering required, just\nthe action.",[20,112,114],{"id":113},"status-and-caveats","Status and caveats",[116,117,118,122,129,137],"ul",{},[119,120,121],"li",{},"WebMCP is a draft, not a finished standard, and jawb treats it (like\nevery protocol it implements) behind a versioned adapter rather than a\nhardcoded assumption.",[119,123,124,125,128],{},"Tool metadata is a policy ",[95,126,127],{},"input",", not proof that a tool is safe.\nWhen invocation arrives, a declared tool will go through the same\npermission and purchase checks as a click. Invoking declared tools, and\nthe policy checks around that, are not built yet.",[119,130,131,132,136],{},"A tool's name and description are page content, written by the site, so\njawb treats them as untrusted. Flagging instructions hidden in tool\ndescriptions is part of the planned guardrails (see\n",[13,133,135],{"href":134},"\u002Fdocs\u002Fsecurity","Security and trust",").",[119,138,139,140,144],{},"MCP, OpenAPI, and commerce protocol adapters (UCP, ACP, AP2, TAP) are\nseparate, later work — see ",[13,141,143],{"href":142},"\u002Fdocs\u002Fprotocol","Protocol adapters",".",[146,147,148],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":45,"searchDepth":77,"depth":77,"links":150},[151,152,153],{"id":22,"depth":77,"text":23},{"id":106,"depth":77,"text":107},{"id":113,"depth":77,"text":114},"How jawb discovers tools a website declares for agents.","md",{},true,null,"\u002Fdocs\u002Fwebmcp",{"title":5,"description":154},"docs\u002F6.webmcp","s26TsQLKFqcPE8Fiizs9FbjGAK8naeaEhXLg1bvrmkg",[164],{"title":165,"path":166,"stem":167,"children":168},"Documentation","\u002Fdocs","docs\u002F1.index",[169,170,172,176,180,202,244,257,261,262,266,270],{"title":165,"path":166,"stem":167},{"title":143,"path":142,"stem":171},"docs\u002F10.protocol",{"title":173,"path":174,"stem":175},"Extensions","\u002Fdocs\u002Fextensions","docs\u002F11.extensions",{"title":177,"path":178,"stem":179},"Roadmap and status","\u002Fdocs\u002Froadmap","docs\u002F12.roadmap",{"title":181,"path":182,"stem":183,"children":184},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F2.getting-started\u002F1.index",[185,186,190,194,198],{"title":181,"path":182,"stem":183},{"title":187,"path":188,"stem":189},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F2.getting-started\u002F2.installation",{"title":191,"path":192,"stem":193},"Desktop app","\u002Fdocs\u002Fgetting-started\u002Fdesktop-app","docs\u002F2.getting-started\u002F3.desktop-app",{"title":195,"path":196,"stem":197},"Running the daemon","\u002Fdocs\u002Fgetting-started\u002Frunning-the-daemon","docs\u002F2.getting-started\u002F4.running-the-daemon",{"title":199,"path":200,"stem":201},"Using the CLI","\u002Fdocs\u002Fgetting-started\u002Fusing-the-cli","docs\u002F2.getting-started\u002F5.using-the-cli",{"title":203,"path":204,"stem":205,"children":206},"CLI reference","\u002Fdocs\u002Fcli","docs\u002F3.cli\u002F1.index",[207,208,212,216,220,224,228,232,236,240],{"title":203,"path":204,"stem":205},{"title":209,"path":210,"stem":211},"JSON envelope and exit codes","\u002Fdocs\u002Fcli\u002Fjson-and-exit-codes","docs\u002F3.cli\u002F10.json-and-exit-codes",{"title":213,"path":214,"stem":215},"jawb status","\u002Fdocs\u002Fcli\u002Fstatus","docs\u002F3.cli\u002F2.status",{"title":217,"path":218,"stem":219},"Tabs, profiles and sessions","\u002Fdocs\u002Fcli\u002Ftabs-and-profiles","docs\u002F3.cli\u002F3.tabs-and-profiles",{"title":221,"path":222,"stem":223},"jawb observe [\u003Curl>] [--full] [--interactive-only] [--js]","\u002Fdocs\u002Fcli\u002Fobserve","docs\u002F3.cli\u002F4.observe",{"title":225,"path":226,"stem":227},"jawb read [--format md|text|json] [--element \u003Cid>] [--full] [--js]","\u002Fdocs\u002Fcli\u002Fread","docs\u002F3.cli\u002F5.read",{"title":229,"path":230,"stem":231},"Act commands","\u002Fdocs\u002Fcli\u002Fact","docs\u002F3.cli\u002F6.act",{"title":233,"path":234,"stem":235},"See commands","\u002Fdocs\u002Fcli\u002Fsee","docs\u002F3.cli\u002F7.see",{"title":237,"path":238,"stem":239},"Policy and confirmation","\u002Fdocs\u002Fcli\u002Fpolicy","docs\u002F3.cli\u002F8.policy",{"title":241,"path":242,"stem":243},"Install lifecycle and profile settings","\u002Fdocs\u002Fcli\u002Flifecycle","docs\u002F3.cli\u002F9.lifecycle",{"title":245,"path":246,"stem":247,"children":248},"SDK reference","\u002Fdocs\u002Fsdk","docs\u002F4.sdk\u002F1.index",[249,250,254],{"title":245,"path":246,"stem":247},{"title":251,"path":252,"stem":253},"Rust SDK — jawb-sdk-rust","\u002Fdocs\u002Fsdk\u002Frust-sdk","docs\u002F4.sdk\u002F2.rust-sdk",{"title":255,"path":101,"stem":256},"Website SDK — @4hum-ai\u002Fjawb-sdk","docs\u002F4.sdk\u002F3.website-sdk",{"title":258,"path":259,"stem":260},"Configuration","\u002Fdocs\u002Fconfig","docs\u002F5.config",{"title":5,"path":159,"stem":161},{"title":263,"path":264,"stem":265},"Agents","\u002Fdocs\u002Fagents","docs\u002F7.agents",{"title":267,"path":268,"stem":269},"MCP server","\u002Fdocs\u002Fmcp","docs\u002F8.mcp",{"title":135,"path":134,"stem":271},"docs\u002F9.security",1792595702076]