[{"data":1,"prerenderedAt":433},["ShallowReactive",2],{"navigation_docs":3,"-providers-marginalia":104,"-providers-marginalia-surround":430},[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":423,"extension":424,"links":425,"meta":426,"navigation":175,"path":101,"seo":428,"stem":102,"__hash__":429},"docs\u002F2.providers\u002F13.marginalia.md",{"type":107,"value":108,"toc":415},"minimark",[109,113,117,122,260,279,283,301,305,336,340,361,365,402,406,411],[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 github-light github-light poimandres","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,170,177,214],"code",{"__ignoreMap":128},[133,134,137,141,145,149,152,156,160,164,167],"span",{"class":135,"line":136},"line",1,[133,138,140],{"class":139},"sP0CR","import",[133,142,144],{"class":143},"sKlNE"," {",[133,146,148],{"class":147},"snHMy"," create",[133,150,151],{"class":143}," }",[133,153,155],{"class":154},"stCPd"," from",[133,157,159],{"class":158},"scVjq"," \"",[133,161,163],{"class":162},"sQ7BG","@agntn\u002Fweb",[133,165,166],{"class":158},"\"",[133,168,169],{"class":143},";\n",[133,171,173],{"class":135,"line":172},2,[133,174,176],{"emptyLinePlaceholder":175},true,"\n",[133,178,180,184,188,191,195,198,201,203,205,207,210],{"class":135,"line":179},3,[133,181,183],{"class":182},"s1TYA","const",[133,185,187],{"class":186},"saoiD"," marginalia",[133,189,190],{"class":182}," =",[133,192,194],{"class":193},"sZW6a"," await",[133,196,148],{"class":197},"sULi6",[133,199,200],{"class":143},"(",[133,202,166],{"class":158},[133,204,112],{"class":162},[133,206,166],{"class":158},[133,208,209],{"class":143},"); ",[133,211,213],{"class":212},"sjhu3","\u002F\u002F MARGINALIA_API_KEY, or the shared \"public\" key\n",[133,215,217,219,222,224,226,229,232,235,237,239,242,244,247,250,253,257],{"class":135,"line":216},4,[133,218,183],{"class":182},[133,220,221],{"class":186}," results",[133,223,190],{"class":182},[133,225,194],{"class":193},[133,227,187],{"class":228},"spVlQ",[133,230,231],{"class":143},".",[133,233,234],{"class":197},"search",[133,236,200],{"class":143},[133,238,166],{"class":158},[133,240,241],{"class":162},"rust async",[133,243,166],{"class":158},[133,245,246],{"class":143},", {",[133,248,249],{"class":147}," maxResults",[133,251,252],{"class":143},":",[133,254,256],{"class":255},"siHFe"," 20",[133,258,259],{"class":143}," });\n",[114,261,262,263,266,267,270,271,274,275,278],{},"The key goes in the ",[130,264,265],{},"API-Key"," header on ",[130,268,269],{},"api2.marginalia-search.com",". Without ",[130,272,273],{},"MARGINALIA_API_KEY"," the adapter sends ",[130,276,277],{},"public",", the key Marginalia hands out for trying the API.",[118,280,282],{"id":281},"when-does-it-run-without-a-key","When does it run without a key?",[114,284,285,286,289,290,293,294,297,298,300],{},"Only when you ask for it by name, ",[130,287,288],{},"create(\"marginalia\")"," or ",[130,291,292],{},"--provider marginalia",". Automatic selection and ",[130,295,296],{},"provider: \"all\""," skip it until ",[130,299,273],{}," 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,302,304],{"id":303},"what-it-reads","What it reads",[306,307,308,321],"table",{},[309,310,311],"thead",{},[312,313,314,318],"tr",{},[315,316,317],"th",{},"Call",[315,319,320],{},"Endpoint",[322,323,324],"tbody",{},[312,325,326,331],{},[327,328,329],"td",{},[130,330,234],{},[327,332,333],{},[130,334,335],{},"GET \u002Fsearch?query=…&count=…&page=…",[118,337,339],{"id":338},"what-comes-back","What comes back",[114,341,342,345,346,349,350,353,354,357,358,231],{},[130,343,344],{},"url",", ",[130,347,348],{},"title"," and ",[130,351,352],{},"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,355,356],{},"page",". No domain filters, no date bounds, no categories. A search that asks for them gets them back in ",[130,359,360],{},"ignoredFilters",[118,362,364],{"id":363},"gotchas","Gotchas",[366,367,368,383,386,396],"ul",{},[369,370,371,372,374,375,378,379,382],"li",{},"The ",[130,373,277],{}," key has one quota per minute, shared by everybody who uses it. Two calls in a row can already get ",[130,376,377],{},"429 QPM Limit Exceeded",", which comes back as a ",[130,380,381],{},"RateLimitError"," and moves the fallback chain on.",[369,384,385],{},"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.",[369,387,388,391,392,395],{},[130,389,390],{},"count"," goes up to 100, a bigger ",[130,393,394],{},"maxResults"," is clamped to that.",[369,397,398,399,231],{},"The answer says how many pages there are and the page after the last one comes back empty, so the continuation stops at ",[130,400,401],{},"pages",[118,403,405],{"id":404},"where-it-lives","Where it lives",[114,407,408,231],{},[130,409,410],{},"src\u002Fproviders\u002Fmarginalia.ts",[412,413,414],"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 .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 .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}html pre.shiki code .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}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":172,"depth":172,"links":416},[417,418,419,420,421,422],{"id":120,"depth":172,"text":121},{"id":281,"depth":172,"text":282},{"id":303,"depth":172,"text":304},{"id":338,"depth":172,"text":339},{"id":363,"depth":172,"text":364},{"id":404,"depth":172,"text":405},"Marginalia Search, an independent index of small personal sites and plain text pages, usable without a key when you name it.","md",null,{"icon":427},"i-lucide-notebook-text",{"title":100,"description":423},"XRlY56ZJFxmOJlb5-ojhNDyU7OkBDSOrL3717QOVKPQ",[431,425],{"title":96,"path":97,"stem":98,"description":432,"children":-1},"Web search through your existing Pi, OMP, Codex or OpenCode login.",1790172955173]