ToolRank

io.github.brandonclark1996-designPublished by GitHub account brandonclark1996-designv0.1.0Updated Nov 1, 2026

Rank MCP servers/APIs for a job. Lexical ranking, 36 curated tools, no Stripe.

The publisher's own server: Rank Fast

VerifiedStreamable HTTPWeb executableDeveloper ToolsAI & ML

Overview

AI-generated overview

ToolRank ranks a small curated catalog of MCP servers and APIs for a described job, returning health, price band and install snippets.

What you can do
  • Search and rank catalog tools for a described job, with optional budget, auth and runtime constraints
  • Fetch a single catalog tool by its id
  • List tools updated after a given ISO timestamp
  • Return shortlists with health status, price band and an install snippet
When to use it
Useful when an assistant or developer is choosing which MCP server or API to adopt for a task and wants a quick, ranked shortlist with install hints. The catalog is small and ranking is lexical, so treat results as a starting point rather than a comprehensive directory.
Requirements
Remote Streamable HTTP endpoint; no local install needed. An optional Bearer API key can be sent in the Authorization header for higher quotas; without it, anonymous access is limited per IP. Network access to the hosted service is required.
Before you install
The optional API key is a secret sent in the Authorization header, so only use a key you are willing to share with this third-party host. Anonymous use is capped per IP over a rolling 24-hour window, and quotas are in-memory, so they reset on restart. Health status is often unknown and ranking is lexical, not learned or sponsored.

Installation

In SourceWeft

  1. Open ToolRank in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.brandonclark1996-design%2Ftoolrank/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "toolrank": {
      "type": "http",
      "url": "https://toolrank.onrender.com/mcp"
    }
  }
}

README

ToolRank (private MVP → public-ready deploy)

Ranked shortlist of MCP servers / APIs for agent jobs — health, price_band, and install snippet.

Live: https://toolrank.onrender.com — OpenAPI at /openapi.json, Streamable HTTP MCP at /mcp.

Private build for Brandon Clark / ToolRank. All Rights Reserved (see LICENSE). GitHub: brandonclark1996-design/toolrank.

Honesty: Ranking is lexical (token overlap), not learned or sponsored. Catalog is 36 curated tools. health is often unknown. Stripe is not wired. Custom domain is not purchased.

Stack

  • Node 20, TypeScript
  • Hono HTTP API
  • Zod validation
  • JSON catalog (data/catalog.json, 36 curated public tools)
  • MCP stdio (npm run mcp) and Streamable HTTP (POST /mcp) via @modelcontextprotocol/sdk
  • API-key auth + process-local soft quotas (src/auth.ts) on /v1/* and /mcp

Quick start (local)

bash
cd /workspace/toolrankcp .env.example .env# Edit .env — set TOOLRANK_API_KEYS if you want keyed access locallyexport TOOLRANK_API_KEYS='trk_live_test:builder'npm installnpm testnpm run buildnpm start              # listens on 0.0.0.0:$PORT (default 8787)# or: npm run dev

Local curl with a test key

bash
export TOOLRANK_API_KEYS='trk_live_test:builder'npm start
curl -s http://127.0.0.1:8787/health | jq .
curl -s http://127.0.0.1:8787/v1/search \  -H 'content-type: application/json' \  -H 'Authorization: Bearer trk_live_test' \  -d '{"job":"scrape website to markdown for RAG","constraints":{"budget":"any"},"limit":5}' | jq .
# Or X-API-Key:curl -s http://127.0.0.1:8787/v1/search \  -H 'content-type: application/json' \  -H 'X-API-Key: trk_live_test' \  -d '{"job":"web search for research","limit":3}' | jq .

Anonymous (no key) works until the free IP quota is hit (20 / rolling 24h).

Auth + limits

CallerHowSoft limit (process-local, rolling 24h)
AnonymousNo key20 req / IP to /v1/* and /mcp
free keyAuthorization: Bearer <key> or X-API-Key: <key>100 / key
builder keysame headers2000 / key
  • Env: TOOLRANK_API_KEYS = comma-separated keys, optional key:plan (free | builder). Example: trk_live_abc:builder,trk_live_xyz:free. Bare key → free.
  • /health and /openapi.json are always open (no auth / no quota).
  • Invalid key → 401 { error, schema_version, as_of }
  • Over quota → 429 + Retry-After (seconds hint)
  • Authed POST /v1/search responses include plan (free | builder)
  • Quotas are in-memory / process-local — fine for single-instance MVP; they reset on restart and do not sync across replicas.

Setting keys on the host (Brandon)

Do not commit real keys. Set TOOLRANK_API_KEYS in the host environment:

  1. Render: Dashboard → your Web Service → Environment → add TOOLRANK_API_KEYS = trk_live_….…:builder,… (use sync: false / secret). Redeploy.
  2. Railway: Service → Variables → TOOLRANK_API_KEYS.
  3. Docker / VPS: -e TOOLRANK_API_KEYS='…' or systemd/env file outside git.
  4. Local: export TOOLRANK_API_KEYS='trk_live_test:builder' before npm start.

Also set HOST=0.0.0.0 (default in code) and let the platform inject PORT.

HTTP API

Base: https://toolrank.onrender.com (or http://127.0.0.1:8787 locally).

MethodPathDescription
GET/healthLiveness + catalog meta (open)
POST/v1/searchRank tools for a job (auth/quota)
GET/v1/tools/:idTool detail (auth/quota)
GET/v1/fresh?since=Updated since ISO timestamp (auth/quota)
GET/openapi.jsonOpenAPI 3.1 (open)
ALL/mcpStreamable HTTP MCP (auth/quota; same tools as stdio)

Search body

json
{  "job": "string (required)",  "constraints": {    "budget": "free | paid | any",    "auth": "optional hint",    "runtime": "mcp | api | …"  },  "limit": 10,  "check_health": false}

Optional check_health: true probes top results (2s timeout). Failures stay unknown (no false down).

Deploy (no custom domain / no Stripe)

Docker

bash
docker build -t toolrank .docker run --rm -p 8787:8787 \  -e TOOLRANK_API_KEYS='trk_live_prod:builder' \  toolrank

Render

  • Blueprint: render.yaml (Docker web service, free plan friendly).
  • Live hostname: https://toolrank.onrender.com (no custom domain required).
  • Set TOOLRANK_API_KEYS in the dashboard.

Railway

  • railway.toml (Dockerfile) or Procfile (web: node dist/index.js after build).
  • Set TOOLRANK_API_KEYS in Variables. Use Railway’s public HTTP domain.

Build step for native Node hosts: npm ci && npm run build then node dist/index.js.

MCP

Tools: search_tools, get_tool, list_fresh (shared handlers for stdio + HTTP).

Streamable HTTP (production)

https://toolrank.onrender.com/mcp

Same API-key / anonymous quota as /v1/*. Official MCP Registry manifest: server.json (io.github.brandonclark1996-design/toolrank). Do not run mcp-publisher from this box unless asked.

Cursor / Claude HTTP MCP config snippet:

json
{  "mcpServers": {    "toolrank": {      "url": "https://toolrank.onrender.com/mcp"    }  }}

stdio (local)

bash
npm run mcp
json
{  "mcpServers": {    "toolrank": {      "command": "npm",      "args": ["run", "mcp"],      "cwd": "/workspace/toolrank"    }  }}

Ranking

  1. Tokenize job (drop stopwords).
  2. Score tag / name / description matches.
  3. Boost matching price_band under budget constraints.
  4. Boost health: up; penalize health: down.
  5. Tiny preference for mcp / both interfaces.

Honest lexical ranking — no paid placement. 36 curated tools. Health often unknown. Stripe not wired.

Docs

  • docs/AGENT.md — agent-readable usage (auth headers + limits)
  • docs/llms.txt — compact machine summary
  • server.json — Official MCP Registry manifest (not published yet)
  • scripts/README-ingest.md — stub for future registry.modelcontextprotocol.io ingest

Tests & build

bash
npm test    # vitest — ranking, envelope, auth middleware, /mcpnpm run build

TODO

  • Implement registry ingest (scripts/README-ingest.md)
  • Persist health probe results between restarts
  • Stripe / paid upgrades (not started)
  • Custom domain (not purchased / not wired)
  • Shared Redis (or similar) quotas if multi-instance
  • Publish server.json with mcp-publisher (not run from this change)

License

All Rights Reserved — Brandon Clark / ToolRank. See LICENSE.

Source: README.md at commit fad9537

Tools

3

search_tools

Rank MCP servers/APIs for a job. Returns shortlist with health, price_band, install snippet.

Parametersjobrequiredauthlimitbudgetruntime

get_tool

Get a single catalog tool by id

Parametersidrequired

list_fresh

List tools updated after an ISO timestamp (optional)

Parameterssince

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.

Other Rank integrations