[{"data":1,"prerenderedAt":1309},["ShallowReactive",2],{"navigation_docs":3,"-guide-agents":104,"-guide-agents-surround":1304},[4,44],{"title":5,"path":6,"stem":7,"children":8,"icon":43},"Guide","\u002Fguide","1.guide\u002F1.index",[9,11,15,19,23,27,31,35,39],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Searching","\u002Fguide\u002Fsearch","1.guide\u002F2.search",{"title":16,"path":17,"stem":18},"Fan-out","\u002Fguide\u002Ffanout","1.guide\u002F3.fanout",{"title":20,"path":21,"stem":22},"Reading","\u002Fguide\u002Fread","1.guide\u002F4.read",{"title":24,"path":25,"stem":26},"Reverse Image Search","\u002Fguide\u002Fimage","1.guide\u002F5.image",{"title":28,"path":29,"stem":30},"CLI","\u002Fguide\u002Fcli","1.guide\u002F6.cli",{"title":32,"path":33,"stem":34},"Agents","\u002Fguide\u002Fagents","1.guide\u002F7.agents",{"title":36,"path":37,"stem":38},"Custom Providers","\u002Fguide\u002Fcustom","1.guide\u002F8.custom",{"title":40,"path":41,"stem":42},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F9.explorer","i-lucide-book-open",{"title":45,"path":46,"stem":47,"children":48,"icon":103},"Providers","\u002Fproviders","2.providers\u002F0.index",[49,51,55,59,63,67,71,75,79,83,87,91,95,99],{"title":50,"path":46,"stem":47},"Overview",{"title":52,"path":53,"stem":54},"Brave","\u002Fproviders\u002Fbrave","2.providers\u002F01.brave",{"title":56,"path":57,"stem":58},"Context.dev","\u002Fproviders\u002Fcontext","2.providers\u002F02.context",{"title":60,"path":61,"stem":62},"Exa","\u002Fproviders\u002Fexa","2.providers\u002F03.exa",{"title":64,"path":65,"stem":66},"Firecrawl","\u002Fproviders\u002Ffirecrawl","2.providers\u002F04.firecrawl",{"title":68,"path":69,"stem":70},"Jina","\u002Fproviders\u002Fjina","2.providers\u002F05.jina",{"title":72,"path":73,"stem":74},"Mojeek","\u002Fproviders\u002Fmojeek","2.providers\u002F06.mojeek",{"title":76,"path":77,"stem":78},"SearXNG","\u002Fproviders\u002Fsearxng","2.providers\u002F07.searxng",{"title":80,"path":81,"stem":82},"SerpAPI","\u002Fproviders\u002Fserpapi","2.providers\u002F08.serpapi",{"title":84,"path":85,"stem":86},"SerpBase","\u002Fproviders\u002Fserpbase","2.providers\u002F09.serpbase",{"title":88,"path":89,"stem":90},"Tavily","\u002Fproviders\u002Ftavily","2.providers\u002F10.tavily",{"title":92,"path":93,"stem":94},"TinyFish","\u002Fproviders\u002Ftinyfish","2.providers\u002F11.tinyfish",{"title":96,"path":97,"stem":98},"OpenAI Codex","\u002Fproviders\u002Fopenai-codex","2.providers\u002F12.openai-codex",{"title":100,"path":101,"stem":102},"Marginalia","\u002Fproviders\u002Fmarginalia","2.providers\u002F13.marginalia","i-lucide-library",{"id":105,"title":32,"body":106,"description":1297,"extension":1298,"links":1299,"meta":1300,"navigation":347,"path":33,"seo":1302,"stem":34,"__hash__":1303},"docs\u002F1.guide\u002F7.agents.md",{"type":107,"value":108,"toc":1289},"minimark",[109,114,204,225,243,257,261,471,487,723,766,770,815,836,846,850,857,873,891,895,902,910,914,917,1285],[110,111,113],"h2",{"id":112},"four-tools-every-host","Four tools, every host",[115,116,117,133],"table",{},[118,119,120],"thead",{},[121,122,123,127,130],"tr",{},[124,125,126],"th",{},"Tool",[124,128,129],{},"Does",[124,131,132],{},"Returns",[134,135,136,155,170,185],"tbody",{},[121,137,138,145,152],{},[139,140,141],"td",{},[142,143,144],"code",{},"web_search",[139,146,147,148,151],{},"one query or a batch, one provider, automatic selection, or ",[142,149,150],{},"all"," for fan-out",[139,153,154],{},"results with the provider diagnostics",[121,156,157,162,165],{},[139,158,159],{},[142,160,161],{},"web_search_image",[139,163,164],{},"matching pages and images for one public image URL",[139,166,167],{},[142,168,169],{},"ImageSearchResult[]",[121,171,172,177,180],{},[139,173,174],{},[142,175,176],{},"web_read",[139,178,179],{},"one URL or a batch into normalized content, with reader provenance",[139,181,182],{},[142,183,184],{},"{ result, requestedProvider, provider, attempts, failures }",[121,186,187,192,195],{},[139,188,189],{},[142,190,191],{},"web_providers",[139,193,194],{},"the running build, configuration, reachability and the complete capability matrix",[139,196,197,200,201],{},[142,198,199],{},"listProviders()"," plus ",[142,202,203],{},"packageCapabilities",[205,206,207,208,211,212,214,215,217,218,221,222,224],"p",{},"Same four on every surface. The descriptions name the built-in providers, but execution checks the name against the live registry, so a custom provider registered before the session works in a tool call too. The host's abort signal cancels the provider request, no zombie fetches after the model gives up. ",[142,209,210],{},"timeoutSeconds"," on ",[142,213,144],{}," and ",[142,216,176],{}," is the budget the model sets itself: a fan-out or batch returns what finished by then and lists the providers it cut off under ",[142,219,220],{},"errors",", so one slow provider no longer holds an ",[142,223,150],{}," search past the host's own limit.",[205,226,227,228,231,232,235,236,231,239,242],{},"A blank optional string counts as an omitted one. Models fill every property of a flat schema, so ",[142,229,230],{},"continuation: \"\""," or ",[142,233,234],{},"startPublishedDate: \"\""," arrives where a person would leave the field out, and an error there costs a round trip for nothing. Real values are still checked, a malformed token or date fails as before, and an empty ",[142,237,238],{},"query",[142,240,241],{},"url"," is still empty.",[205,244,245,246,248,249,252,253,256],{},"Some hosts send a batch as one string, so ",[142,247,238],{}," arrives as ",[142,250,251],{},"'[\"first\",\"second\"]'",". A string that parses as a JSON array of strings runs as that batch on every surface, otherwise ten queries would turn into one long search. Anything else, like ",[142,254,255],{},"[draft] notes",", stays a plain query, and a list longer than 10 fails the same way an array would.",[110,258,260],{"id":259},"ai-sdk","AI SDK",[262,263,268],"pre",{"className":264,"code":265,"language":266,"meta":267,"style":267},"language-ts shiki shiki-themes github-light github-light poimandres","import { generateText } from \"ai\";\nimport { readTool, searchImageTool, searchTool } from \"@agntn\u002Fweb\u002Fai\";\n\nconst { text } = await generateText({\n  model: yourModel,\n  tools: {\n    web_search: searchTool,\n    web_search_image: searchImageTool,\n    web_read: readTool,\n  },\n  prompt: \"Find the latest TypeScript release notes\",\n});\n","ts","",[142,269,270,308,342,349,379,395,406,418,430,442,448,465],{"__ignoreMap":267},[271,272,275,279,283,287,290,294,298,302,305],"span",{"class":273,"line":274},"line",1,[271,276,278],{"class":277},"sP0CR","import",[271,280,282],{"class":281},"sKlNE"," {",[271,284,286],{"class":285},"snHMy"," generateText",[271,288,289],{"class":281}," }",[271,291,293],{"class":292},"stCPd"," from",[271,295,297],{"class":296},"scVjq"," \"",[271,299,301],{"class":300},"sQ7BG","ai",[271,303,304],{"class":296},"\"",[271,306,307],{"class":281},";\n",[271,309,311,313,315,318,321,324,326,329,331,333,335,338,340],{"class":273,"line":310},2,[271,312,278],{"class":277},[271,314,282],{"class":281},[271,316,317],{"class":285}," readTool",[271,319,320],{"class":281},",",[271,322,323],{"class":285}," searchImageTool",[271,325,320],{"class":281},[271,327,328],{"class":285}," searchTool",[271,330,289],{"class":281},[271,332,293],{"class":292},[271,334,297],{"class":296},[271,336,337],{"class":300},"@agntn\u002Fweb\u002Fai",[271,339,304],{"class":296},[271,341,307],{"class":281},[271,343,345],{"class":273,"line":344},3,[271,346,348],{"emptyLinePlaceholder":347},true,"\n",[271,350,352,356,359,363,366,369,373,376],{"class":273,"line":351},4,[271,353,355],{"class":354},"s1TYA","const",[271,357,358],{"class":281}," { ",[271,360,362],{"class":361},"saoiD","text",[271,364,365],{"class":281}," } ",[271,367,368],{"class":354},"=",[271,370,372],{"class":371},"sZW6a"," await",[271,374,286],{"class":375},"sULi6",[271,377,378],{"class":281},"({\n",[271,380,382,385,388,392],{"class":273,"line":381},5,[271,383,384],{"class":285},"  model",[271,386,387],{"class":281},":",[271,389,391],{"class":390},"spVlQ"," yourModel",[271,393,394],{"class":281},",\n",[271,396,398,401,403],{"class":273,"line":397},6,[271,399,400],{"class":285},"  tools",[271,402,387],{"class":281},[271,404,405],{"class":281}," {\n",[271,407,409,412,414,416],{"class":273,"line":408},7,[271,410,411],{"class":285},"    web_search",[271,413,387],{"class":281},[271,415,328],{"class":390},[271,417,394],{"class":281},[271,419,421,424,426,428],{"class":273,"line":420},8,[271,422,423],{"class":285},"    web_search_image",[271,425,387],{"class":281},[271,427,323],{"class":390},[271,429,394],{"class":281},[271,431,433,436,438,440],{"class":273,"line":432},9,[271,434,435],{"class":285},"    web_read",[271,437,387],{"class":281},[271,439,317],{"class":390},[271,441,394],{"class":281},[271,443,445],{"class":273,"line":444},10,[271,446,447],{"class":281},"  },\n",[271,449,451,454,456,458,461,463],{"class":273,"line":450},11,[271,452,453],{"class":285},"  prompt",[271,455,387],{"class":281},[271,457,297],{"class":296},[271,459,460],{"class":300},"Find the latest TypeScript release notes",[271,462,304],{"class":296},[271,464,394],{"class":281},[271,466,468],{"class":273,"line":467},12,[271,469,470],{"class":281},"});\n",[205,472,473,214,475,478,479,482,483,486],{},[142,474,301],{},[142,476,477],{},"zod"," are optional peers. The main entry never imports them, only the ",[142,480,481],{},"\u002Fai"," subpath does. ",[142,484,485],{},"providersTool"," is the fourth export.",[262,488,490],{"className":264,"code":489,"language":266,"meta":267,"style":267},"type SearchToolInput = {\n  query: string | string[]; \u002F\u002F up to 10 in a batch\n  provider?: string; \u002F\u002F a built-in, a custom name, or \"all\"\n  maxResults?: number; \u002F\u002F 1 to 20, default 10\n  continuation?: string;\n  highlights?: boolean;\n  summary?: boolean;\n  fullText?: boolean;\n  favicon?: boolean; \u002F\u002F favicon URLs on results, off by default\n  includeDomains?: string[];\n  excludeDomains?: string[];\n  sources?: string[];\n  categories?: string[];\n  category?: string;\n  startPublishedDate?: string;\n  endPublishedDate?: string;\n  timeoutSeconds?: number; \u002F\u002F whole seconds, at most 3600\n};\n",[142,491,492,506,530,546,561,572,584,595,606,620,632,643,654,666,678,690,702,717],{"__ignoreMap":267},[271,493,494,497,501,504],{"class":273,"line":274},[271,495,496],{"class":354},"type",[271,498,500],{"class":499},"s3-Zl"," SearchToolInput",[271,502,503],{"class":354}," =",[271,505,405],{"class":281},[271,507,508,512,514,518,521,523,526],{"class":273,"line":310},[271,509,511],{"class":510},"stSEH","  query",[271,513,387],{"class":354},[271,515,517],{"class":516},"s8yaW"," string",[271,519,520],{"class":354}," |",[271,522,517],{"class":516},[271,524,525],{"class":281},"[];",[271,527,529],{"class":528},"sjhu3"," \u002F\u002F up to 10 in a batch\n",[271,531,532,535,538,540,543],{"class":273,"line":344},[271,533,534],{"class":510},"  provider",[271,536,537],{"class":354},"?:",[271,539,517],{"class":516},[271,541,542],{"class":281},";",[271,544,545],{"class":528}," \u002F\u002F a built-in, a custom name, or \"all\"\n",[271,547,548,551,553,556,558],{"class":273,"line":351},[271,549,550],{"class":510},"  maxResults",[271,552,537],{"class":354},[271,554,555],{"class":516}," number",[271,557,542],{"class":281},[271,559,560],{"class":528}," \u002F\u002F 1 to 20, default 10\n",[271,562,563,566,568,570],{"class":273,"line":381},[271,564,565],{"class":510},"  continuation",[271,567,537],{"class":354},[271,569,517],{"class":516},[271,571,307],{"class":281},[271,573,574,577,579,582],{"class":273,"line":397},[271,575,576],{"class":510},"  highlights",[271,578,537],{"class":354},[271,580,581],{"class":516}," boolean",[271,583,307],{"class":281},[271,585,586,589,591,593],{"class":273,"line":408},[271,587,588],{"class":510},"  summary",[271,590,537],{"class":354},[271,592,581],{"class":516},[271,594,307],{"class":281},[271,596,597,600,602,604],{"class":273,"line":420},[271,598,599],{"class":510},"  fullText",[271,601,537],{"class":354},[271,603,581],{"class":516},[271,605,307],{"class":281},[271,607,608,611,613,615,617],{"class":273,"line":432},[271,609,610],{"class":510},"  favicon",[271,612,537],{"class":354},[271,614,581],{"class":516},[271,616,542],{"class":281},[271,618,619],{"class":528}," \u002F\u002F favicon URLs on results, off by default\n",[271,621,622,625,627,629],{"class":273,"line":444},[271,623,624],{"class":510},"  includeDomains",[271,626,537],{"class":354},[271,628,517],{"class":516},[271,630,631],{"class":281},"[];\n",[271,633,634,637,639,641],{"class":273,"line":450},[271,635,636],{"class":510},"  excludeDomains",[271,638,537],{"class":354},[271,640,517],{"class":516},[271,642,631],{"class":281},[271,644,645,648,650,652],{"class":273,"line":467},[271,646,647],{"class":510},"  sources",[271,649,537],{"class":354},[271,651,517],{"class":516},[271,653,631],{"class":281},[271,655,657,660,662,664],{"class":273,"line":656},13,[271,658,659],{"class":510},"  categories",[271,661,537],{"class":354},[271,663,517],{"class":516},[271,665,631],{"class":281},[271,667,669,672,674,676],{"class":273,"line":668},14,[271,670,671],{"class":510},"  category",[271,673,537],{"class":354},[271,675,517],{"class":516},[271,677,307],{"class":281},[271,679,681,684,686,688],{"class":273,"line":680},15,[271,682,683],{"class":510},"  startPublishedDate",[271,685,537],{"class":354},[271,687,517],{"class":516},[271,689,307],{"class":281},[271,691,693,696,698,700],{"class":273,"line":692},16,[271,694,695],{"class":510},"  endPublishedDate",[271,697,537],{"class":354},[271,699,517],{"class":516},[271,701,307],{"class":281},[271,703,705,708,710,712,714],{"class":273,"line":704},17,[271,706,707],{"class":510},"  timeoutSeconds",[271,709,537],{"class":354},[271,711,555],{"class":516},[271,713,542],{"class":281},[271,715,716],{"class":528}," \u002F\u002F whole seconds, at most 3600\n",[271,718,720],{"class":273,"line":719},18,[271,721,722],{"class":281},"};\n",[205,724,725,726,729,730,214,733,736,737,740,741,214,744,747,748,751,752,754,755,214,758,761,762,765],{},"A scalar search returns ",[142,727,728],{},"{ provider, results, ignoredFilters, undeclaredFilters, pagination, metadata? }",", automatic ones add ",[142,731,732],{},"attempts",[142,734,735],{},"failures",", and ",[142,738,739],{},"provider: \"all\""," returns the fan-out envelope with ",[142,742,743],{},"providers",[142,745,746],{},"evidence"," on each result. ",[142,749,750],{},"readTool"," takes ",[142,753,241],{}," or an array of URLs plus the read options, defaults to 20 000 characters and accepts at most 200 000. Without that default a model would happily ask for a whole site and stuff it into its context. The page's ",[142,756,757],{},"links",[142,759,760],{},"images"," are off unless the model asks for them, a long page carries thousands and they'd outweigh the content several times over. The ",[142,763,764],{},"favicon"," URLs on search results are off the same way: they were a third of a ten result Brave answer and a model has nothing to do with an icon address.",[110,767,769],{"id":768},"mcp","MCP",[262,771,775],{"className":772,"code":773,"language":774,"meta":267,"style":267},"language-bash shiki shiki-themes github-light github-light poimandres","web mcp\nclaude mcp add web --scope user -- web mcp\n","bash",[142,776,777,787],{"__ignoreMap":267},[271,778,779,783],{"class":273,"line":274},[271,780,782],{"class":781},"sseY5","web",[271,784,786],{"class":785},"sX7Zv"," mcp\n",[271,788,789,792,795,798,801,805,808,811,813],{"class":273,"line":310},[271,790,791],{"class":781},"claude",[271,793,794],{"class":785}," mcp",[271,796,797],{"class":785}," add",[271,799,800],{"class":785}," web",[271,802,804],{"class":803},"sqT1Y"," --scope",[271,806,807],{"class":785}," user",[271,809,810],{"class":803}," --",[271,812,800],{"class":785},[271,814,786],{"class":785},[205,816,817,818,821,822,825,826,829,830,832,833,835],{},"The server uses the SDK's ",[142,819,820],{},"Server"," class with TypeBox schemas. Every tool advertises an output schema and returns its result under ",[142,823,824],{},"structuredContent.result",", compact JSON stays in ",[142,827,828],{},"content"," for clients that only render text. With ",[142,831,739],{}," each result already is its first provider's record, so here and in the Pi and OMP tools ",[142,834,746],{}," holds only what the other providers said, and a page just one engine found has none. Sending that record twice cost about a quarter of every fan-out answer. Tool symbols and titles match the native extensions, and nothing decorative gets written into the JSON-RPC stream. The client owns its TUI, not the server.",[205,837,838,841,842,845],{},[142,839,840],{},"createMcpServer()"," from the ",[142,843,844],{},"@agntn\u002Fweb\u002Fmcp"," subpath returns the same server when your host brings its own transport.",[110,847,849],{"id":848},"pi-and-omp","Pi and OMP",[205,851,852,853,856],{},"The Pi extension requires ",[142,854,855],{},"@earendil-works\u002Fpi-coding-agent"," 0.86.1 or later. OMP keeps its 18.x API, tested with 18.2.6. Updating the package alone won't update either host.",[262,858,860],{"className":772,"code":859,"language":774,"meta":267,"style":267},"pi install git:github.com\u002Fagntn\u002Fweb\n",[142,861,862],{"__ignoreMap":267},[271,863,864,867,870],{"class":273,"line":274},[271,865,866],{"class":781},"pi",[271,868,869],{"class":785}," install",[271,871,872],{"class":785}," git:github.com\u002Fagntn\u002Fweb\n",[205,874,875,876,882,883,886,887,890],{},"The package ships the four tools as a ",[877,878,866],"a",{"href":879,"rel":880},"https:\u002F\u002Fpi.dev",[881],"nofollow"," extension and an OMP extension. Pi also gets two slash commands: ",[142,884,885],{},"\u002Fweb [query]"," shows results as a selector and pastes the chosen URL into the editor, ",[142,888,889],{},"\u002Fweb-providers"," shows configuration, reachability and capabilities. Both extensions read the same env vars as the library. Their TUI rows show progress, provider choice, result counts and fallback attempts, with bounded previews. A whole page rendered into the terminal is useless, so it never happens.",[110,892,894],{"id":893},"what-the-answer-is","What the answer is",[205,896,897,898,901],{},"The tools return the normalized objects, not prose. A model summarizing them should say what the provider said. The ",[877,899,40],{"href":900},"\u002Fexplorer"," shows the same objects for any query, which is a quick way to check a summary against the source when a model gets creative.",[903,904,905,906,909],"caution",{},"Titles, snippets, highlights and page content are published by whoever owns the page. They are data to report, not instructions to follow. An agent that reads ",[142,907,908],{},"snippet: \"ignore previous instructions\""," has learned one thing about the page, and nothing about what to do next.",[110,911,913],{"id":912},"rolling-your-own","Rolling your own",[205,915,916],{},"Framework is none of the above? The four tools are thin wrappers over the helpers anyway:",[262,918,920],{"className":264,"code":919,"language":266,"meta":267,"style":267},"import { listProviders, readUrlDetailed, searchAllDetailed, searchByImage, searchWithFallback } from \"@agntn\u002Fweb\";\n\nexport async function run(input: { operation: string; query?: string; url?: string; provider?: string }, signal?: AbortSignal) {\n  switch (input.operation) {\n    case \"search\":\n      return input.provider === \"all\"\n        ? searchAllDetailed(input.query!, { signal })\n        : searchWithFallback(input.query!, { signal });\n    case \"search_image\":\n      return searchByImage(input.url!, { provider: input.provider, signal });\n    case \"read\":\n      return readUrlDetailed(input.url!, { provider: input.provider, maxChars: 20_000, signal });\n    case \"providers\":\n      return listProviders();\n  }\n}\n",[142,921,922,964,968,1043,1060,1075,1097,1124,1148,1161,1196,1209,1254,1266,1275,1280],{"__ignoreMap":267},[271,923,924,926,928,931,933,936,938,941,943,946,948,951,953,955,957,960,962],{"class":273,"line":274},[271,925,278],{"class":277},[271,927,282],{"class":281},[271,929,930],{"class":285}," listProviders",[271,932,320],{"class":281},[271,934,935],{"class":285}," readUrlDetailed",[271,937,320],{"class":281},[271,939,940],{"class":285}," searchAllDetailed",[271,942,320],{"class":281},[271,944,945],{"class":285}," searchByImage",[271,947,320],{"class":281},[271,949,950],{"class":285}," searchWithFallback",[271,952,289],{"class":281},[271,954,293],{"class":292},[271,956,297],{"class":296},[271,958,959],{"class":300},"@agntn\u002Fweb",[271,961,304],{"class":296},[271,963,307],{"class":281},[271,965,966],{"class":273,"line":310},[271,967,348],{"emptyLinePlaceholder":347},[271,969,970,973,976,979,983,986,990,992,994,998,1000,1002,1005,1007,1009,1011,1013,1015,1017,1019,1021,1024,1026,1028,1031,1034,1036,1040],{"class":273,"line":344},[271,971,972],{"class":277},"export",[271,974,975],{"class":277}," async",[271,977,978],{"class":354}," function",[271,980,982],{"class":981},"scZRh"," run",[271,984,985],{"class":281},"(",[271,987,989],{"class":988},"s1jWp","input",[271,991,387],{"class":354},[271,993,358],{"class":281},[271,995,997],{"class":996},"s0VbO","operation",[271,999,387],{"class":354},[271,1001,517],{"class":516},[271,1003,1004],{"class":281},"; ",[271,1006,238],{"class":996},[271,1008,537],{"class":354},[271,1010,517],{"class":516},[271,1012,1004],{"class":281},[271,1014,241],{"class":996},[271,1016,537],{"class":354},[271,1018,517],{"class":516},[271,1020,1004],{"class":281},[271,1022,1023],{"class":996},"provider",[271,1025,537],{"class":354},[271,1027,517],{"class":516},[271,1029,1030],{"class":281}," }, ",[271,1032,1033],{"class":988},"signal",[271,1035,537],{"class":354},[271,1037,1039],{"class":1038},"sCrqT"," AbortSignal",[271,1041,1042],{"class":281},") {\n",[271,1044,1045,1048,1051,1053,1056,1058],{"class":273,"line":351},[271,1046,1047],{"class":292},"  switch",[271,1049,1050],{"class":281}," (",[271,1052,989],{"class":390},[271,1054,1055],{"class":281},".",[271,1057,997],{"class":390},[271,1059,1042],{"class":281},[271,1061,1062,1065,1067,1070,1072],{"class":273,"line":381},[271,1063,1064],{"class":292},"    case",[271,1066,297],{"class":296},[271,1068,1069],{"class":300},"search",[271,1071,304],{"class":296},[271,1073,1074],{"class":281},":\n",[271,1076,1077,1080,1083,1085,1087,1090,1092,1094],{"class":273,"line":397},[271,1078,1079],{"class":371},"      return",[271,1081,1082],{"class":390}," input",[271,1084,1055],{"class":281},[271,1086,1023],{"class":390},[271,1088,1089],{"class":354}," ===",[271,1091,297],{"class":296},[271,1093,150],{"class":300},[271,1095,1096],{"class":296},"\"\n",[271,1098,1099,1102,1104,1106,1108,1110,1112,1115,1118,1121],{"class":273,"line":408},[271,1100,1101],{"class":354},"        ?",[271,1103,940],{"class":375},[271,1105,985],{"class":281},[271,1107,989],{"class":390},[271,1109,1055],{"class":281},[271,1111,238],{"class":390},[271,1113,1114],{"class":354},"!",[271,1116,1117],{"class":281},", {",[271,1119,1120],{"class":390}," signal",[271,1122,1123],{"class":281}," })\n",[271,1125,1126,1129,1131,1133,1135,1137,1139,1141,1143,1145],{"class":273,"line":420},[271,1127,1128],{"class":354},"        :",[271,1130,950],{"class":375},[271,1132,985],{"class":281},[271,1134,989],{"class":390},[271,1136,1055],{"class":281},[271,1138,238],{"class":390},[271,1140,1114],{"class":354},[271,1142,1117],{"class":281},[271,1144,1120],{"class":390},[271,1146,1147],{"class":281}," });\n",[271,1149,1150,1152,1154,1157,1159],{"class":273,"line":432},[271,1151,1064],{"class":292},[271,1153,297],{"class":296},[271,1155,1156],{"class":300},"search_image",[271,1158,304],{"class":296},[271,1160,1074],{"class":281},[271,1162,1163,1165,1167,1169,1171,1173,1175,1177,1179,1182,1184,1186,1188,1190,1192,1194],{"class":273,"line":444},[271,1164,1079],{"class":371},[271,1166,945],{"class":375},[271,1168,985],{"class":281},[271,1170,989],{"class":390},[271,1172,1055],{"class":281},[271,1174,241],{"class":390},[271,1176,1114],{"class":354},[271,1178,1117],{"class":281},[271,1180,1181],{"class":285}," provider",[271,1183,387],{"class":281},[271,1185,1082],{"class":390},[271,1187,1055],{"class":281},[271,1189,1023],{"class":390},[271,1191,320],{"class":281},[271,1193,1120],{"class":390},[271,1195,1147],{"class":281},[271,1197,1198,1200,1202,1205,1207],{"class":273,"line":450},[271,1199,1064],{"class":292},[271,1201,297],{"class":296},[271,1203,1204],{"class":300},"read",[271,1206,304],{"class":296},[271,1208,1074],{"class":281},[271,1210,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1242,1244,1248,1250,1252],{"class":273,"line":467},[271,1212,1079],{"class":371},[271,1214,935],{"class":375},[271,1216,985],{"class":281},[271,1218,989],{"class":390},[271,1220,1055],{"class":281},[271,1222,241],{"class":390},[271,1224,1114],{"class":354},[271,1226,1117],{"class":281},[271,1228,1181],{"class":285},[271,1230,387],{"class":281},[271,1232,1082],{"class":390},[271,1234,1055],{"class":281},[271,1236,1023],{"class":390},[271,1238,320],{"class":281},[271,1240,1241],{"class":285}," maxChars",[271,1243,387],{"class":281},[271,1245,1247],{"class":1246},"siHFe"," 20_000",[271,1249,320],{"class":281},[271,1251,1120],{"class":390},[271,1253,1147],{"class":281},[271,1255,1256,1258,1260,1262,1264],{"class":273,"line":656},[271,1257,1064],{"class":292},[271,1259,297],{"class":296},[271,1261,743],{"class":300},[271,1263,304],{"class":296},[271,1265,1074],{"class":281},[271,1267,1268,1270,1272],{"class":273,"line":668},[271,1269,1079],{"class":371},[271,1271,930],{"class":375},[271,1273,1274],{"class":281},"();\n",[271,1276,1277],{"class":273,"line":680},[271,1278,1279],{"class":281},"  }\n",[271,1281,1282],{"class":273,"line":692},[271,1283,1284],{"class":281},"}\n",[1286,1287,1288],"style",{},"html pre.shiki code .sP0CR, html code.shiki .sP0CR{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .snHMy, html code.shiki .snHMy{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#ADD7FF}html pre.shiki code .stCPd, html code.shiki .stCPd{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCD}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .sZW6a, html code.shiki .sZW6a{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7C0}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}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 .s3-Zl, html code.shiki .s3-Zl{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCD}html pre.shiki code .stSEH, html code.shiki .stSEH{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#ADD7FF}html pre.shiki code .s8yaW, html code.shiki .s8yaW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#A6ACCDC0}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--shiki-dark-font-style:italic}html pre.shiki code .sseY5, html code.shiki .sseY5{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#91B4D5}html pre.shiki code .sX7Zv, html code.shiki .sX7Zv{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#ADD7FF}html pre.shiki code .sqT1Y, html code.shiki .sqT1Y{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#ADD7FF}html pre.shiki code .scZRh, html code.shiki .scZRh{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#ADD7FF}html pre.shiki code .s1jWp, html code.shiki .s1jWp{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#E4F0FB}html pre.shiki code .s0VbO, html code.shiki .s0VbO{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#A6ACCD}html pre.shiki code .sCrqT, html code.shiki .sCrqT{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCDC0}html pre.shiki code .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}",{"title":267,"searchDepth":310,"depth":310,"links":1290},[1291,1292,1293,1294,1295,1296],{"id":112,"depth":310,"text":113},{"id":259,"depth":310,"text":260},{"id":768,"depth":310,"text":769},{"id":848,"depth":310,"text":849},{"id":893,"depth":310,"text":894},{"id":912,"depth":310,"text":913},"The same four tools for the Vercel AI SDK, the MCP server, Pi and OMP, and what an agent should and should not do with the answer.","md",null,{"icon":1301},"i-lucide-bot",{"title":32,"description":1297},"wTuCFuffI96Hc_EcxapffRBD0TpS40nsOaKpPzK-E-0",[1305,1307],{"title":28,"path":29,"stem":30,"description":1306,"children":-1},"The web command, its five subcommands, the flags, and the JSON envelopes that match the library.",{"title":36,"path":37,"stem":38,"description":1308,"children":-1},"Extend the base class, implement the capabilities you have, register it, and every helper, tool and CLI picks it up.",1790257650383]