Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Webify

Adaptive web research for AI coding agents

91% of Deep Research quality · 5% of the cost · Works in every MCP client

PyPI version License: MIT Python 3.9+

A skill by GrapeRoot

Docs: 中文 · 日本語 · 한국어 · Español · हिन्दी · Français · Deutsch · Português · Русский


Install in 2 commands

pip install webify-mcp
claude mcp add webify -- webify-mcp

That's it. Works in Claude Code, Cursor, VS Code, Windsurf, and Zed.


What it does

flowchart TB
    Agent[AI Agent] -->|"web_find('query')"| Webify
    Agent -->|"web_lookup(url, 'query')"| Webify
    Webify -->|"80–300 tokens"| Agent
    
    subgraph Webify[Webify MCP Server]
        Search[Search\nBrave / DDG] --> Graph[DOM Structural\nGraph Builder]
        Graph --> Retrieve[BM25 + BFS\nRetrieval]
        Retrieve --> Synthesize[Haiku\nSynthesis]
    end

    style Webify fill:#1a1a2e,stroke:#16213e,color:#fff
    style Agent fill:#0f3460,stroke:#16213e,color:#fff
Loading

Two tools for web research — both dramatically cheaper than reading full pages:

Tool When to use Cost
web_find(query) Research questions, anything needing search ~$0.003/query
web_lookup(url, query) You know the exact URL ~$0.0005/query

web_find — multi-source research

flowchart LR
    A[Query] --> B[Search\nBrave / DDG]
    B --> C1[Page 1]
    B --> C2[Page 2]
    B --> C3[Page 3–6]
    C1 --> D[DOM Graph\n+ BM25]
    C2 --> D
    C3 --> D
    D --> E[Multi-aspect\nextraction]
    E --> F[Haiku\nsynthesis]
    F --> G["Answer\n(~800 tokens)"]
Loading

Adapts depth to query complexity. Simple questions hit 3 sources. Multi-dimensional research scales to 6+ with independent sub-aspect retrieval. Call it multiple times with focused sub-queries for deep-research-level coverage.

web_lookup — single-page retrieval

flowchart LR
    A[URL + Query] --> B[Fetch page]
    B --> C[DOM structural\ngraph]
    C --> D[BM25 scoring]
    D --> E[BFS traversal]
    E --> F["Relevant subtree\n(80–300 tokens)"]
Loading

Scores nodes against your query, returns only the relevant subtree — 80–300 tokens instead of the 3,000–15,000 tokens of full page text WebFetch puts in context.


Benchmarks

Blind A/B test against Claude's Deep Research — 15 unseen queries, randomized order, Sonnet judge scoring accuracy + completeness + specificity (1–5 each).

Webify Deep Research
Quality 68/75 · 91% 73/75 · 97%
Cost/query ~$0.003 ~$0.05+
Latency 30–90s 80–280s
Cost efficiency 18× better baseline

Webify finds correct information every time. The gap is always completeness — Deep Research reads more. For most queries that difference doesn't matter; for exhaustive research, call web_find multiple times.

Per-query breakdown
Query Webify Deep Research
Battery degradation 13/15 15/15
OAuth vs OIDC 13/15 15/15
Coral reef bleaching 14/15 15/15
CRISPR gene editing 15/15 13/15
Earthquake & tsunamis 13/15 15/15

How the AI uses it

Once installed, the AI automatically uses Webify for web research instead of expensive built-in tools — no configuration needed. The preference policy is embedded in the package itself.

> What are the tradeoffs between Raft and Paxos consensus?
→ Claude calls web_find() — searches, builds graphs, synthesizes answer

> Look up rate limits in the GitHub API docs
→ Claude calls web_lookup() — fetches that page, returns relevant sections only

Tool-specific setup

Claude Code

pip install webify-mcp
claude mcp add webify -- webify-mcp

Cursor · Windsurf · VS Code (Continue/Cline) · Zed

Add to your MCP config:

{
  "mcpServers": {
    "webify": {
      "command": "webify-mcp"
    }
  }
}

Config file locations:

  • Cursor~/.cursor/mcp.json
  • Windsurf~/.windsurf/settings.json
  • VS Code / Continue~/.continue/config.json
  • Zed~/.config/zed/settings.json

Any other MCP client

  • Command: webify-mcp
  • Transport: stdio

Updating

pip install --upgrade webify-mcp

Configuration

Env var Required Description
ANTHROPIC_API_KEY For web_find Haiku synthesis
BRAVE_SEARCH_API_KEY Recommended Reliable search · free 2k/mo
WEBIFY_CACHE_DIR No Cache dir · default ~/.cache/webify

Search: Brave API (if key set) → DuckDuckGo Lite (free fallback, no key needed)

Setting keys

macOS / Linux — add to ~/.zshrc or ~/.bashrc:

export ANTHROPIC_API_KEY="sk-ant-..."
export BRAVE_SEARCH_API_KEY="BSA..."

Windows (PowerShell):

[Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-ant-...", "User")
[Environment]::SetEnvironmentVariable("BRAVE_SEARCH_API_KEY", "BSA...", "User")

In your MCP config (applies only to Webify):

{
  "mcpServers": {
    "webify": {
      "command": "webify-mcp",
      "env": {
        "ANTHROPIC_API_KEY": "sk-ant-...",
        "BRAVE_SEARCH_API_KEY": "BSA..."
      }
    }
  }
}

Get your keys:


CLI usage

# Build a graph for a URL
python -m webify build https://docs.python.org/3/library/json.html

# Look up specific info
python -m webify lookup https://docs.python.org/3/library/json.html "parse JSON string"

Python library

import webify

# Multi-source search
result = webify.web_find("how does mTLS work in service meshes")
print(result["content"])   # synthesized answer
print(result["sources"])   # [{url, title, confidence, tokens}]

# Single-page lookup
result = webify.smart_lookup("https://docs.python.org/3/library/json.html", "parse JSON")
print(result["content"])   # relevant sections only (~376 tokens)

Troubleshooting

webify-mcp                  # test server (Ctrl+C to exit)
ls ~/.cache/webify/         # check cache
  • webify-mcp: command not found → Run pip install webify-mcp
  • Tool not showing up → Restart your editor after adding to config
  • web_find errors → Set ANTHROPIC_API_KEY
  • web_find returns no results → DDG rate-limited; set BRAVE_SEARCH_API_KEY

License

MIT · Copyright © 2026 GrapeRoot

About

Adaptive web research MCP skill for AI coding agents. pip install webify-mcp

Resources

Stars

84 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages