[{"data":1,"prerenderedAt":1313},["ShallowReactive",2],{"navigation_docs":3,"-guide-agents":104,"-guide-agents-surround":1308},[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":1301,"extension":1302,"links":1303,"meta":1304,"navigation":347,"path":33,"seo":1306,"stem":34,"__hash__":1307},"docs\u002F1.guide\u002F7.agents.md",{"type":107,"value":108,"toc":1293},"minimark",[109,114,204,225,243,257,261,471,487,723,770,774,819,840,850,854,861,877,895,899,906,914,918,921,1289],[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,744,745,214,748,751,752,755,756,758,759,214,762,765,766,769],{},"A scalar search returns ",[142,727,728],{},"{ provider, results, ignoredFilters, undeclaredFilters, pagination, metadata? }",", automatic ones add ",[142,731,732],{},"attempts",[142,734,735],{},"failures",", plus ",[142,738,739],{},"skipped"," when a provider with spent credits was passed over, and ",[142,742,743],{},"provider: \"all\""," returns the fan-out envelope with ",[142,746,747],{},"providers",[142,749,750],{},"evidence"," on each result. ",[142,753,754],{},"readTool"," takes ",[142,757,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,760,761],{},"links",[142,763,764],{},"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,767,768],{},"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,771,773],{"id":772},"mcp","MCP",[262,775,779],{"className":776,"code":777,"language":778,"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,780,781,791],{"__ignoreMap":267},[271,782,783,787],{"class":273,"line":274},[271,784,786],{"class":785},"sseY5","web",[271,788,790],{"class":789},"sX7Zv"," mcp\n",[271,792,793,796,799,802,805,809,812,815,817],{"class":273,"line":310},[271,794,795],{"class":785},"claude",[271,797,798],{"class":789}," mcp",[271,800,801],{"class":789}," add",[271,803,804],{"class":789}," web",[271,806,808],{"class":807},"sqT1Y"," --scope",[271,810,811],{"class":789}," user",[271,813,814],{"class":807}," --",[271,816,804],{"class":789},[271,818,790],{"class":789},[205,820,821,822,825,826,829,830,833,834,836,837,839],{},"The server uses the SDK's ",[142,823,824],{},"Server"," class with TypeBox schemas. Every tool advertises an output schema and returns its result under ",[142,827,828],{},"structuredContent.result",", compact JSON stays in ",[142,831,832],{},"content"," for clients that only render text. With ",[142,835,743],{}," each result already is its first provider's record, so here and in the Pi and OMP tools ",[142,838,750],{}," 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,841,842,845,846,849],{},[142,843,844],{},"createMcpServer()"," from the ",[142,847,848],{},"@agntn\u002Fweb\u002Fmcp"," subpath returns the same server when your host brings its own transport.",[110,851,853],{"id":852},"pi-and-omp","Pi and OMP",[205,855,856,857,860],{},"The Pi extension requires ",[142,858,859],{},"@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,862,864],{"className":776,"code":863,"language":778,"meta":267,"style":267},"pi install git:github.com\u002Fagntn\u002Fweb\n",[142,865,866],{"__ignoreMap":267},[271,867,868,871,874],{"class":273,"line":274},[271,869,870],{"class":785},"pi",[271,872,873],{"class":789}," install",[271,875,876],{"class":789}," git:github.com\u002Fagntn\u002Fweb\n",[205,878,879,880,886,887,890,891,894],{},"The package ships the four tools as a ",[881,882,870],"a",{"href":883,"rel":884},"https:\u002F\u002Fpi.dev",[885],"nofollow"," extension and an OMP extension. Pi also gets two slash commands: ",[142,888,889],{},"\u002Fweb [query]"," shows results as a selector and pastes the chosen URL into the editor, ",[142,892,893],{},"\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,896,898],{"id":897},"what-the-answer-is","What the answer is",[205,900,901,902,905],{},"The tools return the normalized objects, not prose. A model summarizing them should say what the provider said. The ",[881,903,40],{"href":904},"\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.",[907,908,909,910,913],"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,911,912],{},"snippet: \"ignore previous instructions\""," has learned one thing about the page, and nothing about what to do next.",[110,915,917],{"id":916},"rolling-your-own","Rolling your own",[205,919,920],{},"Framework is none of the above? The four tools are thin wrappers over the helpers anyway:",[262,922,924],{"className":264,"code":923,"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,925,926,968,972,1047,1064,1079,1101,1128,1152,1165,1200,1213,1258,1270,1279,1284],{"__ignoreMap":267},[271,927,928,930,932,935,937,940,942,945,947,950,952,955,957,959,961,964,966],{"class":273,"line":274},[271,929,278],{"class":277},[271,931,282],{"class":281},[271,933,934],{"class":285}," listProviders",[271,936,320],{"class":281},[271,938,939],{"class":285}," readUrlDetailed",[271,941,320],{"class":281},[271,943,944],{"class":285}," searchAllDetailed",[271,946,320],{"class":281},[271,948,949],{"class":285}," searchByImage",[271,951,320],{"class":281},[271,953,954],{"class":285}," searchWithFallback",[271,956,289],{"class":281},[271,958,293],{"class":292},[271,960,297],{"class":296},[271,962,963],{"class":300},"@agntn\u002Fweb",[271,965,304],{"class":296},[271,967,307],{"class":281},[271,969,970],{"class":273,"line":310},[271,971,348],{"emptyLinePlaceholder":347},[271,973,974,977,980,983,987,990,994,996,998,1002,1004,1006,1009,1011,1013,1015,1017,1019,1021,1023,1025,1028,1030,1032,1035,1038,1040,1044],{"class":273,"line":344},[271,975,976],{"class":277},"export",[271,978,979],{"class":277}," async",[271,981,982],{"class":354}," function",[271,984,986],{"class":985},"scZRh"," run",[271,988,989],{"class":281},"(",[271,991,993],{"class":992},"s1jWp","input",[271,995,387],{"class":354},[271,997,358],{"class":281},[271,999,1001],{"class":1000},"s0VbO","operation",[271,1003,387],{"class":354},[271,1005,517],{"class":516},[271,1007,1008],{"class":281},"; ",[271,1010,238],{"class":1000},[271,1012,537],{"class":354},[271,1014,517],{"class":516},[271,1016,1008],{"class":281},[271,1018,241],{"class":1000},[271,1020,537],{"class":354},[271,1022,517],{"class":516},[271,1024,1008],{"class":281},[271,1026,1027],{"class":1000},"provider",[271,1029,537],{"class":354},[271,1031,517],{"class":516},[271,1033,1034],{"class":281}," }, ",[271,1036,1037],{"class":992},"signal",[271,1039,537],{"class":354},[271,1041,1043],{"class":1042},"sCrqT"," AbortSignal",[271,1045,1046],{"class":281},") {\n",[271,1048,1049,1052,1055,1057,1060,1062],{"class":273,"line":351},[271,1050,1051],{"class":292},"  switch",[271,1053,1054],{"class":281}," (",[271,1056,993],{"class":390},[271,1058,1059],{"class":281},".",[271,1061,1001],{"class":390},[271,1063,1046],{"class":281},[271,1065,1066,1069,1071,1074,1076],{"class":273,"line":381},[271,1067,1068],{"class":292},"    case",[271,1070,297],{"class":296},[271,1072,1073],{"class":300},"search",[271,1075,304],{"class":296},[271,1077,1078],{"class":281},":\n",[271,1080,1081,1084,1087,1089,1091,1094,1096,1098],{"class":273,"line":397},[271,1082,1083],{"class":371},"      return",[271,1085,1086],{"class":390}," input",[271,1088,1059],{"class":281},[271,1090,1027],{"class":390},[271,1092,1093],{"class":354}," ===",[271,1095,297],{"class":296},[271,1097,150],{"class":300},[271,1099,1100],{"class":296},"\"\n",[271,1102,1103,1106,1108,1110,1112,1114,1116,1119,1122,1125],{"class":273,"line":408},[271,1104,1105],{"class":354},"        ?",[271,1107,944],{"class":375},[271,1109,989],{"class":281},[271,1111,993],{"class":390},[271,1113,1059],{"class":281},[271,1115,238],{"class":390},[271,1117,1118],{"class":354},"!",[271,1120,1121],{"class":281},", {",[271,1123,1124],{"class":390}," signal",[271,1126,1127],{"class":281}," })\n",[271,1129,1130,1133,1135,1137,1139,1141,1143,1145,1147,1149],{"class":273,"line":420},[271,1131,1132],{"class":354},"        :",[271,1134,954],{"class":375},[271,1136,989],{"class":281},[271,1138,993],{"class":390},[271,1140,1059],{"class":281},[271,1142,238],{"class":390},[271,1144,1118],{"class":354},[271,1146,1121],{"class":281},[271,1148,1124],{"class":390},[271,1150,1151],{"class":281}," });\n",[271,1153,1154,1156,1158,1161,1163],{"class":273,"line":432},[271,1155,1068],{"class":292},[271,1157,297],{"class":296},[271,1159,1160],{"class":300},"search_image",[271,1162,304],{"class":296},[271,1164,1078],{"class":281},[271,1166,1167,1169,1171,1173,1175,1177,1179,1181,1183,1186,1188,1190,1192,1194,1196,1198],{"class":273,"line":444},[271,1168,1083],{"class":371},[271,1170,949],{"class":375},[271,1172,989],{"class":281},[271,1174,993],{"class":390},[271,1176,1059],{"class":281},[271,1178,241],{"class":390},[271,1180,1118],{"class":354},[271,1182,1121],{"class":281},[271,1184,1185],{"class":285}," provider",[271,1187,387],{"class":281},[271,1189,1086],{"class":390},[271,1191,1059],{"class":281},[271,1193,1027],{"class":390},[271,1195,320],{"class":281},[271,1197,1124],{"class":390},[271,1199,1151],{"class":281},[271,1201,1202,1204,1206,1209,1211],{"class":273,"line":450},[271,1203,1068],{"class":292},[271,1205,297],{"class":296},[271,1207,1208],{"class":300},"read",[271,1210,304],{"class":296},[271,1212,1078],{"class":281},[271,1214,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1246,1248,1252,1254,1256],{"class":273,"line":467},[271,1216,1083],{"class":371},[271,1218,939],{"class":375},[271,1220,989],{"class":281},[271,1222,993],{"class":390},[271,1224,1059],{"class":281},[271,1226,241],{"class":390},[271,1228,1118],{"class":354},[271,1230,1121],{"class":281},[271,1232,1185],{"class":285},[271,1234,387],{"class":281},[271,1236,1086],{"class":390},[271,1238,1059],{"class":281},[271,1240,1027],{"class":390},[271,1242,320],{"class":281},[271,1244,1245],{"class":285}," maxChars",[271,1247,387],{"class":281},[271,1249,1251],{"class":1250},"siHFe"," 20_000",[271,1253,320],{"class":281},[271,1255,1124],{"class":390},[271,1257,1151],{"class":281},[271,1259,1260,1262,1264,1266,1268],{"class":273,"line":656},[271,1261,1068],{"class":292},[271,1263,297],{"class":296},[271,1265,747],{"class":300},[271,1267,304],{"class":296},[271,1269,1078],{"class":281},[271,1271,1272,1274,1276],{"class":273,"line":668},[271,1273,1083],{"class":371},[271,1275,934],{"class":375},[271,1277,1278],{"class":281},"();\n",[271,1280,1281],{"class":273,"line":680},[271,1282,1283],{"class":281},"  }\n",[271,1285,1286],{"class":273,"line":692},[271,1287,1288],{"class":281},"}\n",[1290,1291,1292],"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":1294},[1295,1296,1297,1298,1299,1300],{"id":112,"depth":310,"text":113},{"id":259,"depth":310,"text":260},{"id":772,"depth":310,"text":773},{"id":852,"depth":310,"text":853},{"id":897,"depth":310,"text":898},{"id":916,"depth":310,"text":917},"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":1305},"i-lucide-bot",{"title":32,"description":1301},"OGpwkcHFTwcc-f_Z2236biCcvnKVHDJ2WwdoOZQFBuo",[1309,1311],{"title":28,"path":29,"stem":30,"description":1310,"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":1312,"children":-1},"Extend the base class, implement the capabilities you have, register it, and every helper, tool and CLI picks it up.",1790458674841]