{"name":"io.github.firish/webfetch","slug":"firish-webfetch","title":"webfetch","description":"Self-hosted web search for LLM agents: search -> fetch -> rank pipeline with semantic caching","url":"https://mcp.market/server/firish-webfetch","rating":null,"grade":"C","score":65,"certified":false,"status":"active","category":"seo","tags":["seo","ai","search"],"presence":{"score":31,"stars":60,"forks":6,"downloads_week":34,"last_push_at":"2026-07-23T01:13:30.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/firish/webfetch","website":null,"version":"0.1.3","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"webfetch-llm","version":"0.1.3","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Optional - adds Brave to the multi-engine fusion. DDG works with no keys at all.","isSecret":true,"name":"BRAVE_API_KEY"},{"description":"Optional - adds Serper (Google results) to the multi-engine fusion.","isSecret":true,"name":"SERPER_API_KEY"},{"description":"Optional - adds Tavily to the multi-engine fusion.","isSecret":true,"name":"TAVILY_API_KEY"},{"description":"Optional - search strategy: multi (RRF fusion of available engines, default), fallback (priority failover), or a single engine name like ddg.","name":"WEBFETCH_PROVIDER"}]}],"tools":[{"name":"fetch_url","description":"Fetch one page's full extracted text under a budget.","write_action":false,"price_micros":0,"input_schema":null},{"name":"save_finding","description":"Cache a fact learned outside web_search, marked unverified.","write_action":false,"price_micros":0,"input_schema":null},{"name":"savings_report","description":"What webfetch has saved vs hosted web-search pricing: this session (since the server started) plus the lifetime total.","write_action":false,"price_micros":0,"input_schema":null},{"name":"status","description":"Setup status: which search engines have keys and will serve, which optional features are on or degraded, cache location, and the env-var configuration surface.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_search","description":"Search the web and return ranked, source-labeled excerpts.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":65,"grade":"C","scanned_at":"2026-11-07T13:06:12.831Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-07T13:06:12.793Z","components":{"code":{"score":20,"max":25,"notes":["59 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":8,"max":15,"notes":["last push 107 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"webfetch_llm-0.1.3/evals/run_matcher_eval.py: …\"\"\" Layer 1: offline semantic-matcher eval (no network beyond model downloads). Ans…"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"webfetch-llm","version":"0.1.3","found":true,"weeklyDownloads":34,"license":"MIT","dependencyCount":23,"publishedAt":"2026-07-19T05:15:02.992276Z","repositoryUrl":"https://github.com/firish/webfetch"}],"repo":{"found":true,"owner":"firish","repo":"webfetch","archived":false,"pushedAt":"2026-07-23T01:13:30Z","stars":60,"forks":6,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/106293665?v=4","ownerCreatedAt":"2022-05-26T03:41:28Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/106293665?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":60,"forks":6,"downloadsWeek":34,"license":"MIT","lastPushAt":"2026-07-23T01:13:30.000Z","score":31}}}},"grade_history":[{"kind":"downgrade","fromGrade":"B","toGrade":"C","reason":"score 65: eval / new Function used","createdAt":"2026-11-07T13:06:13.283Z"}],"reviews":[]}