disvr
Tool search engine for AI agents. One API call to discover the best MCP server for any task. 900+ services indexed with 4-dimensional value ranking.
README
<h1 align="center">🔍 Disvr</h1>
<p align="center"> <strong>Spend Intelligence for AI Agents — the "Yelp for the Agent Economy"</strong> </p>
<p align="center"> <a href="https://www.disvr.top"><img src="https://img.shields.io/badge/Live-www.disvr.top-00d4aa?style=for-the-badge" alt="Live Site"></a> <a href="https://api.disvr.top/health"><img src="https://img.shields.io/badge/API-Online-62fae3?style=for-the-badge" alt="API Status"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge" alt="MIT License"></a> </p>
<p align="center"> <a href="#why-disvr">Why Disvr</a> · <a href="#quick-start">Quick Start</a> · <a href="#api-reference">API</a> · <a href="#architecture">Architecture</a> · <a href="https://www.disvr.top/explorer">Live Demo</a> · <a href="docs/README_zh.md">中文文档</a> </p>
Why Disvr?
The AI Agent ecosystem is exploding. Payment protocols (Stripe MPP, OpenAI ACP, x402) solve how to pay. Directories (Smithery, Composio) solve what exists.
But nobody solves the most critical question: which tool is actually worth using?
🤖 "Translate a Chinese legal contract to Thai" → 50 translation services on Smithery. Which one has the best cost/quality ratio?
🤖 "Scrape product prices from e-commerce sites" → 30 scraping tools. Which one has the highest success rate and lowest latency?
🤖 "Generate a product image" → 20 image generation services. Which one is cheapest while still being good enough?
Right now, agents pick blindly. Wrong picks mean wasted money, wasted time, and failed tasks.
Disvr fixes this.
Instead of returning a list, Disvr returns a ranked recommendation — based on a 4-dimensional value score:
| Dimension | Weight | What it measures |
|---|---|---|
| 🎯 Semantic Match | 0.30 | How well the service matches the need |
| ⭐ Quality | 0.25 | Historical success rate, reputation |
| 💰 Cost Efficiency | 0.25 | Cost per call, value for money |
| 🔒 Reliability | 0.20 | Latency, retry rate, uptime |
Your agent stops guessing and starts choosing the best tool for the job.
✅ Before You Start
| 💰 Free to use | Free tier: 1,000 queries/day, no credit card required |
| 🔌 MCP Native | One-line config for Claude Code, Cursor, or any MCP client |
| 🔄 Closed-Loop Feedback | Agents report call results → rankings get smarter over time |
| ☁️ Global Edge | Deployed on Cloudflare Workers, low latency worldwide |
| 📡 Real-time Data | Hourly crawls from Smithery keep service data fresh |
Quick Start
Option 1: MCP Server (Recommended)
Add one line to your .mcp.json:
{
"mcpServers": {
"disvr": {
"type": "url",
"url": "https://api.disvr.top/mcp"
}
}
}
Restart Claude Code / Cursor — your agent now has the discover_services tool.
Try telling your agent:
- "Find the best tool to translate Chinese legal documents to Thai"
- "Recommend the cheapest web scraping service with high success rate"
- "Which image generation API has the best price/quality ratio?"
Option 2: REST API
curl -X POST https://api.disvr.top/discover \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"need": "translate Chinese legal contract to Thai"}'
Returns Top 3 recommendations ranked by value_score:
{
"recommendations": [
{
"service": "deepl-mcp-server",
"platform": "smithery",
"match_confidence": 0.92,
"reputation": 4.2,
"price_usd": 0.002,
"reason": "Best cost/quality ratio for legal document translation"
}
]
}
Live Demo
| Page | Link | Description |
|---|---|---|
| 🏠 Home | www.disvr.top | Product overview |
| 🔍 Explorer | www.disvr.top/explorer | Interactive query playground — try the API live |
| 📋 Registry | www.disvr.top/registry | Browse all indexed services |
| 📊 Analytics | www.disvr.top/analytics | System architecture & scoring visualization |
API Reference
POST /discover — Service Discovery
Describe what your agent needs, get back Top 3 ranked recommendations.
POST https://api.disvr.top/discover
Authorization: Bearer <api-key>
Content-Type: application/json
{
"need": "scrape product prices from e-commerce websites",
"max_price_per_call": 0.01,
"max_latency_ms": 5000,
"min_reputation": 3.0
}
| Parameter | Required | Description |
|---|---|---|
need |
✅ | What you need (≥5 chars) |
max_price_per_call |
❌ | Max price per call (USD) |
max_latency_ms |
❌ | Max acceptable latency (ms) |
min_reputation |
❌ | Min reputation score (0-5) |
POST /report — Feedback Loop
Report call results after using a tool — closes the feedback loop and improves rankings.
POST https://api.disvr.top/report
Authorization: Bearer <api-key>
Content-Type: application/json
{
"service_id": "deepl-mcp-server",
"query_id": "q_abc123",
"success": true,
"latency_ms": 1200,
"cost_usd": 0.002
}
GET /health — Health Check
curl https://api.disvr.top/health
# {"status": "ok", "services_indexed": 330}
MCP Tools
Tools exposed via the MCP Server:
| Tool | Description |
|---|---|
discover_services |
Semantic search + 4-dim value ranking |
list_service_count |
Total number of indexed services |
report_call_result |
Report call results (feedback loop) |
SDK
TypeScript/JavaScript SDK with full type safety:
npm install @sylar_yan/disvr
import { Disvr } from "@sylar_yan/disvr";
const client = new Disvr("dsvr_your_api_key");
const result = await client.discover({
need: "translate Chinese legal contract to Thai",
max_latency_ms: 3000,
min_reputation: 3.5,
});
console.log(result.recommendations);
Architecture
Agent Query ("I need X")
│
▼
┌─────────────────────────────────────────┐
│ Disvr API (Cloudflare Workers + Hono) │
├─────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────────────┐ │
│ │ Embed │───▶│ CF Vectorize │ │
│ │ (OpenAI) │ │ (1536-dim cosine)│ │
│ └──────────┘ └────────┬─────────┘ │
│ │ │
│ ┌─────── 50 candidates ──────┐ │
│ ▼ │ │
│ ┌──────────────┐ ┌────────────┐ │ │
│ │ D1 Database │ │ FTS5 │ │ │
│ │ (services, │ │ (fallback) │ │ │
│ │ call_reports)│ └────────────┘ │ │
│ └──────┬───────┘ │ │
│ │ │ │
│ ▼ │ │
│ ┌──────────────────────────────┐ │ │
│ │ 4-Dim Value Ranking │ │ │
│ │ semantic × 0.30 │ │ │
│ │ quality × 0.25 │ │ │
│ │ cost_eff × 0.25 │ │ │
│ │ reliable × 0.20 │ │ │
│ └──────────┬───────────────────┘ │ │
│ ▼ │ │
│ Top 3 Recommendations │ │
│ │ │
├──────────────────────────────────────┤ │
│ MCP Server (Streamable HTTP) │ │
│ via CF Agents SDK + Durable Objects │ │
└──────────────────────────────────────┘ │
│
┌──────────────────────────────────┘
▼
┌─────────────┐
│ Cron Trigger │ ← Hourly: crawl (Smithery + GitHub + MCP Registry)
│ (4-phase) │ → enrich GitHub Stars → health checks
└─────────────┘ → aggregate daily stats
│
┌────▼────────────┐
│ POST /report │ ← Agent feedback
│ refreshStats() │ success_rate, latency → ranking improvement
└─────────────────┘
Tech Stack
| Component | Technology |
|---|---|
| Runtime | Cloudflare Workers |
| Framework | Hono |
| Database | Cloudflare D1 (SQLite) |
| Vector Search | CF Vectorize (1536-dim, cosine) |
| Text Search | FTS5 (OR + prefix, fallback path) |
| Embedding | OpenAI text-embedding-3-small |
| MCP Server | CF Agents SDK (McpAgent + Durable Objects) |
| Data Sources | Smithery, GitHub awesome-mcp, MCP Official Registry (~2000 services) |
| Cron | CF Cron Trigger (hourly) |
| Language | TypeScript |
Project Structure
disvr/
├── wrangler.toml # CF Workers config
├── schema.sql # D1 database schema
├── src/
│ ├── index.ts # Hono entry + REST routes
│ ├── discover.ts # Core: semantic search + 4-dim ranking
│ ├── db.ts # D1 CRUD + feedback stats
│ ├── crawl.ts # Multi-source crawlers + embedAndIndex
│ ├── mcp.ts # MCP Server (Streamable HTTP)
│ ├── types.ts # TypeScript type definitions
│ ├── landing.ts # Landing page HTML
│ └── pages/
│ ├── registry.ts # Provider Registry page
│ ├── explorer.ts # Agent Query Explorer page
│ └── analytics.ts # Analytics Dashboard page
├── test/
│ ├── types.test.ts # Type conversion tests
│ ├── discover.test.ts # Matching engine tests
│ ├── db.test.ts # D1 operations tests
│ ├── api.test.ts # REST API integration tests
│ └── crawl.test.ts # Crawler tests
└── .mcp.json # MCP config example
Local Development
# Prerequisites: Node.js 22+
nvm use 22
# Install dependencies
npm install
# Local dev server
npx wrangler dev
# Run tests
npx vitest run
# Deploy
npx wrangler deploy
Environment Variables
# Set OpenAI API Key (for embeddings)
wrangler secret put OPENAI_API_KEY
Database Setup
# Create D1 database
wrangler d1 create disvr-db
# Run schema
wrangler d1 execute disvr-db --file=./schema.sql
# Create Vectorize index
wrangler vectorize create disvr-mcp-index --dimensions=1536 --metric=cosine
Design Philosophy
Spend Intelligence, Not Just Search
Disvr is not a directory. It's not a marketplace. It's a decision layer.
Traditional directories return a list and let you pick. Disvr returns a recommendation and tells you:
- Why this tool is worth using
- How its cost/quality ratio compares
- What makes it better than alternatives
Closed-Loop Feedback is the Moat
Every time an agent reports a call result (success/failure, latency, cost), it feeds back into the ranking algorithm. More usage → smarter recommendations. This isn't a static database — it's a living intelligence system.
Dual-Path Search Guarantees Recall
- Primary: OpenAI embedding → CF Vectorize vector search (semantic matching)
- Fallback: FTS5 full-text search (OR + prefix wildcards)
- Automatically degrades when embedding fails or vector search returns empty — always returns results
Roadmap
- [x] Core API (discover + report + health)
- [x] MCP Server (Streamable HTTP)
- [x] Smithery crawler (330+ services)
- [x] GitHub awesome-mcp crawler + Stars enrichment
- [x] MCP Official Registry crawler (1000+ services)
- [x] Landing page + 4 frontend pages
- [x] Custom domains (www.disvr.top + api.disvr.top)
- [x] npm SDK (@sylar_yan/disvr)
- [x] 90 unit tests (types, discover, db, api, crawl)
- [x] Request logging + Analytics API
- [x] Daily stats cron aggregation
- [x] Health checks + multi-signal reputation scoring
- [x] User registration + API key management UI
- [ ] Agent integration verification (MCP real-world testing)
- [ ] Cost tracking dashboard
- [ ] Payment protocol integration (Stripe MPP / x402)
Contributing
PRs and Issues are welcome!
- 🐛 Bug reports → GitHub Issues
- 💡 Feature requests → GitHub Issues
- 🔧 Code contributions → Fork & PR
Acknowledgments
- Cloudflare Workers — Global edge compute
- Hono — Lightweight web framework
- Smithery — MCP service registry
- OpenAI — text-embedding-3-small
- CF Agents SDK — MCP Server implementation
License
<p align="center"> <strong>Stop guessing. Start discovering.</strong> <br/> <a href="https://www.disvr.top">www.disvr.top</a> · <a href="https://api.disvr.top/mcp">MCP Server</a> · <a href="https://api.disvr.top/health">API Status</a> </p>
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。