Skip to main content
Glama

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

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)


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 from Smithery
  β”‚ (hourly)     β”‚     embedAndIndex β†’ Vectorize
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
       β”‚
  β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚ 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 Source

Smithery Registry (16,000+ servers)

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            # Smithery crawler + 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
└── .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

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 indexed)

  • Landing page + 4 frontend pages

  • Custom domains (www.disvr.top + api.disvr.top)

  • More data sources (MCP Official Registry, GitHub)

  • Agent integration verification

  • Additional tests (db.test.ts, api.test.ts, crawl.test.ts)

  • User registration + API key management UI

  • Cost tracking dashboard


Contributing

PRs and Issues are welcome!

  • πŸ› Bug reports β†’ GitHub Issues

  • πŸ’‘ Feature requests β†’ GitHub Issues

  • πŸ”§ Code contributions β†’ Fork & PR


Acknowledgments


License

MIT


-
security - not tested
A
license - permissive license
-
quality - not tested

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