disvr
Provides tools for discovering and ranking AI agent services, leveraging Cloudflare Workers for global edge deployment and Cloudflare D1 for database storage.
Enables service discovery and ranking for AI agents, built on Cloudflare Workers runtime with D1 database and Vectorize for semantic search.
Indexes and ranks DeepL translation services for AI agents, allowing discovery of best cost/quality translation tools for specific needs.
Crawls and indexes services from GitHub awesome-mcp repository, enabling discovery and ranking of MCP services for AI agents.
Provides REST API endpoints for service discovery and ranking using Hono framework on Cloudflare Workers.
Uses OpenAI embeddings for semantic matching of service descriptions to agent needs, enabling intelligent service recommendations.
Stores service metadata and call reports in Cloudflare D1 (SQLite-based database) for ranking and analytics.
References Stripe MPP payment protocol as part of the AI agent ecosystem context for service discovery and ranking.
Provides TypeScript SDK with full type safety for programmatic access to service discovery and ranking capabilities.
Described as the "Yelp for the Agent Economy," providing ranked recommendations for AI agent services based on multiple quality dimensions.
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 | Product overview | |
π Explorer | Interactive query playground β try the API live | |
π Registry | Browse all indexed services | |
π 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 |
| β | What you need (β₯5 chars) |
| β | Max price per call (USD) |
| β | Max acceptable latency (ms) |
| β | 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 |
| Semantic search + 4-dim value ranking |
| Total number of indexed services |
| Report call results (feedback loop) |
SDK
TypeScript/JavaScript SDK with full type safety:
npm install @sylar_yan/disvrimport { 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 exampleLocal 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 deployEnvironment Variables
# Set OpenAI API Key (for embeddings)
wrangler secret put OPENAI_API_KEYDatabase 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=cosineDesign 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
Core API (discover + report + health)
MCP Server (Streamable HTTP)
Smithery crawler (330+ services)
GitHub awesome-mcp crawler + Stars enrichment
MCP Official Registry crawler (1000+ services)
Landing page + 4 frontend pages
Custom domains (www.disvr.top + api.disvr.top)
npm SDK (@sylar_yan/disvr)
90 unit tests (types, discover, db, api, crawl)
Request logging + Analytics API
Daily stats cron aggregation
Health checks + multi-signal reputation scoring
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
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Svanik-yan/disvr'
If you have feedback or need assistance with the MCP directory API, please join our Discord server