[{"data":1,"prerenderedAt":394},["ShallowReactive",2],{"navigation_docs":3,"-providers-marginalia":104,"-providers-marginalia-surround":391},[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":100,"body":106,"description":384,"extension":385,"links":386,"meta":387,"navigation":160,"path":101,"seo":389,"stem":102,"__hash__":390},"docs\u002F2.providers\u002F13.marginalia.md",{"type":107,"value":108,"toc":376},"minimark",[109,113,117,122,220,239,243,261,265,296,300,322,326,363,367,372],[110,111],"provider-facts",{"provider":112},"marginalia",[114,115,116],"p",{},"Marginalia indexes its own crawl and leans toward personal sites, blogs and plain HTML documentation. Ask it about \"rust async\" and the top hits are fasterthanli.me and a couple of personal blogs, not the usual content farms. Worth having next to a Google style provider, because it finds different pages.",[118,119,121],"h2",{"id":120},"address-it","Address it",[123,124,129],"pre",{"className":125,"code":126,"language":127,"meta":128,"style":128},"language-ts shiki shiki-themes web web web","import { create } from \"@agntn\u002Fweb\";\n\nconst marginalia = await create(\"marginalia\"); \u002F\u002F MARGINALIA_API_KEY, or the shared \"public\" key\nconst results = await marginalia.search(\"rust async\", { maxResults: 20 });\n","ts","",[130,131,132,155,162,194],"code",{"__ignoreMap":128},[133,134,137,141,145,148,152],"span",{"class":135,"line":136},"line",1,[133,138,140],{"class":139},"skH_V","import",[133,142,144],{"class":143},"s38Sx"," { create } ",[133,146,147],{"class":139},"from",[133,149,151],{"class":150},"shU9J"," \"@agntn\u002Fweb\"",[133,153,154],{"class":143},";\n",[133,156,158],{"class":135,"line":157},2,[133,159,161],{"emptyLinePlaceholder":160},true,"\n",[133,163,165,168,171,174,177,181,184,187,190],{"class":135,"line":164},3,[133,166,167],{"class":139},"const",[133,169,170],{"class":143}," marginalia ",[133,172,173],{"class":139},"=",[133,175,176],{"class":139}," await",[133,178,180],{"class":179},"sK71F"," create",[133,182,183],{"class":143},"(",[133,185,186],{"class":150},"\"marginalia\"",[133,188,189],{"class":143},"); ",[133,191,193],{"class":192},"scIB-","\u002F\u002F MARGINALIA_API_KEY, or the shared \"public\" key\n",[133,195,197,199,202,204,206,209,212,214,217],{"class":135,"line":196},4,[133,198,167],{"class":139},[133,200,201],{"class":143}," results ",[133,203,173],{"class":139},[133,205,176],{"class":139},[133,207,208],{"class":143}," marginalia.",[133,210,211],{"class":179},"search",[133,213,183],{"class":143},[133,215,216],{"class":150},"\"rust async\"",[133,218,219],{"class":143},", { maxResults: 20 });\n",[114,221,222,223,226,227,230,231,234,235,238],{},"The key goes in the ",[130,224,225],{},"API-Key"," header on ",[130,228,229],{},"api2.marginalia-search.com",". Without ",[130,232,233],{},"MARGINALIA_API_KEY"," the adapter sends ",[130,236,237],{},"public",", the key Marginalia hands out for trying the API.",[118,240,242],{"id":241},"when-does-it-run-without-a-key","When does it run without a key?",[114,244,245,246,249,250,253,254,257,258,260],{},"Only when you ask for it by name, ",[130,247,248],{},"create(\"marginalia\")"," or ",[130,251,252],{},"--provider marginalia",". Automatic selection and ",[130,255,256],{},"provider: \"all\""," skip it until ",[130,259,233],{}," is set, so nobody's queries start going to a new host just because they upgraded. With the key set it joins the detection order right after Mojeek.",[118,262,264],{"id":263},"what-it-reads","What it reads",[266,267,268,281],"table",{},[269,270,271],"thead",{},[272,273,274,278],"tr",{},[275,276,277],"th",{},"Call",[275,279,280],{},"Endpoint",[282,283,284],"tbody",{},[272,285,286,291],{},[287,288,289],"td",{},[130,290,211],{},[287,292,293],{},[130,294,295],{},"GET \u002Fsearch?query=…&count=…&page=…",[118,297,299],{"id":298},"what-comes-back","What comes back",[114,301,302,305,306,309,310,313,314,317,318,321],{},[130,303,304],{},"url",", ",[130,307,308],{},"title"," and ",[130,311,312],{},"snippet",", nothing else. Marginalia's answer also has a ranking number, a document format and a count of hits per domain, and all three are left out, so the agent does not pay tokens for them. Paging works through ",[130,315,316],{},"page",". No domain filters, no date bounds, no categories. A search that asks for them gets them back in ",[130,319,320],{},"ignoredFilters",".",[118,323,325],{"id":324},"gotchas","Gotchas",[327,328,329,344,347,357],"ul",{},[330,331,332,333,335,336,339,340,343],"li",{},"The ",[130,334,237],{}," key has one quota per minute, shared by everybody who uses it. Two calls in a row can already get ",[130,337,338],{},"429 QPM Limit Exceeded",", which comes back as a ",[130,341,342],{},"RateLimitError"," and moves the fallback chain on.",[330,345,346],{},"Results under a free key are licensed CC-BY-NC-SA 4.0. A free key of your own comes by email to Marginalia, commercial use needs a paid key.",[330,348,349,352,353,356],{},[130,350,351],{},"count"," goes up to 100, a bigger ",[130,354,355],{},"maxResults"," is clamped to that.",[330,358,359,360,321],{},"The answer says how many pages there are and the page after the last one comes back empty, so the continuation stops at ",[130,361,362],{},"pages",[118,364,366],{"id":365},"where-it-lives","Where it lives",[114,368,369,321],{},[130,370,371],{},"src\u002Fproviders\u002Fmarginalia.ts",[373,374,375],"style",{},"html pre.shiki code .skH_V, html code.shiki .skH_V{--shiki-light:var(--shiki-token-keyword);--shiki-default:var(--shiki-token-keyword);--shiki-dark:var(--shiki-token-keyword)}html pre.shiki code .s38Sx, html code.shiki .s38Sx{--shiki-light:var(--ui-text-highlighted);--shiki-default:var(--ui-text-highlighted);--shiki-dark:var(--ui-text-highlighted)}html pre.shiki code .shU9J, html code.shiki .shU9J{--shiki-light:var(--shiki-token-string);--shiki-default:var(--shiki-token-string);--shiki-dark:var(--shiki-token-string)}html pre.shiki code .sK71F, html code.shiki .sK71F{--shiki-light:var(--shiki-token-function);--shiki-default:var(--shiki-token-function);--shiki-dark:var(--shiki-token-function)}html pre.shiki code .scIB-, html code.shiki .scIB-{--shiki-light:var(--shiki-token-comment);--shiki-default:var(--shiki-token-comment);--shiki-dark:var(--shiki-token-comment)}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);}",{"title":128,"searchDepth":157,"depth":157,"links":377},[378,379,380,381,382,383],{"id":120,"depth":157,"text":121},{"id":241,"depth":157,"text":242},{"id":263,"depth":157,"text":264},{"id":298,"depth":157,"text":299},{"id":324,"depth":157,"text":325},{"id":365,"depth":157,"text":366},"Marginalia Search, an independent index of small personal sites and plain text pages, usable without a key when you name it.","md",null,{"icon":388},"i-lucide-notebook-text",{"title":100,"description":384},"hxGD_mmGh3LxLjb5zx_ZLafDFdnLBPa04fd27sby3Wo",[392,386],{"title":96,"path":97,"stem":98,"description":393,"children":-1},"Web search through your existing Pi, OMP, Codex or OpenCode login.",1791182559801]