Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

TrustLens

БесплатноНе проверен

A pay-per-call MCP server that evaluates AI agents on the OKX.AI marketplace, providing a hiring-trust score, grade, and breakdown based on review authenticity,

GitHubEmbed

Описание

A pay-per-call MCP server that evaluates AI agents on the OKX.AI marketplace, providing a hiring-trust score, grade, and breakdown based on review authenticity, sales velocity, and price fairness.

README

TrustLens is a pay-per-call Agent-to-MCP (A2MCP) service for the OKX.AI marketplace. Any human or agent can get a deterministic, evidence-based answer to "should I hire this OKX.AI agent?" in one paid MCP call. It is a standard MCP server over HTTPS whose endpoints implement the x402 payment standard, priced at 0.01 USDT/call, settling in USDT/USDG on X Layer.

TrustLens computes a marketplace hiring-trust score — review authenticity, rating-vs-sales anomalies, sales velocity, and price fairness versus category — returning one deterministic JSON verdict per call (a 0–100 TrustScore, an A–F grade, a confidence level, and a factual per-component breakdown). This is distinct from creditworthiness scoring (Factor), raw data feeds (TO1), and dispute arbitration (Internet Court). Every reason string is neutral and factual; the methodology page documents exactly how each score is derived.

The 4 MCP tools

  • score_agent(agent_id_or_name) — the full trust card for one agent: TrustScore, grade, confidence, and each component's neutral reason string.
  • compare_agents(ids) — score several agents side by side in one call.
  • category_leaderboard(category, limit=10) — the ranked table for one marketplace category.
  • marketplace_stats() — aggregate distribution stats across the indexed marketplace.

Local run

pip install -e .[dev]
python -m indexer.refresh
uvicorn server.main:app --host 0.0.0.0 --port 8000

pip install -e .[dev] installs the runtime deps plus the test tooling. python -m indexer.refresh seeds the SQLite store and builds the leaderboard from the bundled census CSV offline (prints 272 agents, 272 snapshots, source=census). uvicorn server.main:app serves everything on one port — server/main.py exposes app = create_app().

Endpoints:

  • / — the ranked leaderboard site.
  • /healthz — health check.
  • /mcp — the MCP (Streamable HTTP) endpoint.

Tests & coverage gate

python -m pytest

The full suite runs green (320 passing) with a ≥90% coverage gate scoped to scoring/ (currently 100%).

Footgun: the coverage gate (--cov=scoring) always applies, so any subset run that skips the scoring tests reports 0% and fails the gate. Run partial selections with --no-cov. For example, the scraper's offline canned-response tests:

python -m pytest tests/test_scraper.py --no-cov

Docker

docker compose up

One service, one port (8000:8000); the .env file is optional (required: false). On first start the container entrypoint self-seeds both the DB and the leaderboard from the committed census CSV ([ -f data/trustlens.db ] && [ -f web/dist/index.html ] || python -m indexer.refresh) — offline, reproducible, and it completes in seconds before uvicorn starts.

HUMAN-ONLY: requires the Docker Desktop engine running. This is a carried Phase-3/4 environment blocker — the engine would not start in the build environment and docker info fails when it is down. The identical app is proven in-process and against a live uvicorn, so this step is a container smoke test that folds into the final human checklist.

Optional: refresh from okx.ai (--scrape)

python -m indexer.refresh --scrape

By default refresh is offline and CSV-only. Passing --scrape adds a polite enrichment pass against okx.ai (≤1 req/s, User-Agent TrustLens/1.0, responses cached under data/cache/) that refreshes sales, rating, price, and positive-percentage fields for agents already in the census. Every failure path — a non-200 response, a timeout, missing or changed page markup, or an unparseable payload — logs a warning and falls back to the census CSV, so the refresh exit-code contract is never affected by network state. The census rows always stand when a scrape yields nothing usable.

MCP Inspector

List the tools (expects exactly 4, each with an outputSchema):

npx --yes @modelcontextprotocol/inspector --cli http://localhost:8000/mcp --method tools/list

Call score_agent with a CJK agent name:

npx --yes @modelcontextprotocol/inspector --cli http://localhost:8000/mcp --method tools/call --tool-name score_agent --tool-arg 'agent_id_or_name=这个能吃吗?'

This returns agent 3345 / grade A / TrustScore 94. The name resolves via an NFKC name_key, so agent_id_or_name="3345" and the ASCII-? variant 这个能吃吗? resolve to the same card.

More examples:

npx --yes @modelcontextprotocol/inspector --cli http://localhost:8000/mcp --method tools/call --tool-name compare_agents --tool-arg 'ids=["3345","2662"]'
npx --yes @modelcontextprotocol/inspector --cli http://localhost:8000/mcp --method tools/call --tool-name category_leaderboard --tool-arg 'category=Trading & DeFi' --tool-arg 'limit=5'
npx --yes @modelcontextprotocol/inspector --cli http://localhost:8000/mcp --method tools/call --tool-name marketplace_stats

x402 pre-registration check

Before registering the ASP, confirm the endpoint issues the payment challenge:

curl -i -X POST https://<host>/mcp

Expected: HTTP/1.1 402 Payment Required with an uppercase PAYMENT-REQUIRED header that base64-decodes to the payment-requirements JSON (scheme exact, network eip155:196, amount "10000" = 0.01 USDT at 6 decimals). POST /mcp/ returns a byte-identical 402.

Not gated: /healthz, /, /badge/*, and the MCP handshake methods (initialize, tools/list) all respond normally without payment.

Configuration (env vars)

Copy .env.example to .env and fill in values. All five variables:

Var Purpose Placeholder
TRUSTLENS_PAY_TO wallet receiving 0.01 USDT/call 0x0000...0000
TRUSTLENS_PRICE_USDT price in human USDT (→ atomic "10000") 0.01
X_LAYER_RPC X Layer RPC (SDK swap only) https://rpc.xlayer.tech
X402_MOCK EXACTLY 1 = mock; anything else = fail-closed 402 (empty)
TRUSTLENS_BASE_URL public base advertised in requirements + methodology http://localhost:8000

Never commit real values; .env is gitignored. Use placeholder addresses in any shared example.

Mock → real payment SDK

In development, set X402_MOCK=1 to use MockVerifier (it accepts any non-empty PAYMENT-SIGNATURE and returns a mock receipt). At deploy time, drop the OKX Payment SDK okxweb3-app-x402 in at the make_verifier / PaymentVerifier seam in server/payments.pyUnconfiguredVerifier (the fail-closed production default, which 402s every paid request) is the exact swap point. The real facilitator credentials (OKX_API_KEY, OKX_SECRET_KEY, OKX_PASSPHRASE) are a HUMAN-ONLY stop condition — they are tied to a wallet and are never committed or set by the build.

Deploy

Deploy to any HTTPS-capable host; a public HTTPS domain is required. OKX suggests Hong Kong / Singapore nodes. HUMAN-ONLY — remote deploy and domain purchase are stop conditions handled by a human operator.

Register on OKX.AI (ASP)

Registration and listing are completed through the OKX Onchain OS agent. Quote the two prompts below exactly.

  1. Install Onchain OS:

    npx skills add okx/onchainos-skills --yes -g
    
  2. Log into the OKX Agentic Wallet. [HUMAN-ONLY]

  3. Send agent prompt 1 (VERBATIM):

    Help me register an A2MCP ASP on OKX.AI using Onchain OS
    

    Fields it asks for: service name, description, price per call, endpoint URL.

  4. Send agent prompt 2 (VERBATIM):

    Help me list my ASP on OKX.AI using Onchain OS
    
  5. Review completes within 24h to the registered wallet email. [HUMAN-ONLY]

HUMAN-ONLY stop conditions: deploy, wallet login, ASP registration submission, ASP listing submission, and real OKX credentials are all human-only steps — the build prepares the materials and stops here.

from github.com/Chimdalu-Ofoegbu/TrustLens

Установка TrustLens

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/Chimdalu-Ofoegbu/TrustLens

FAQ

TrustLens MCP бесплатный?

Да, TrustLens MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для TrustLens?

Нет, TrustLens работает без API-ключей и переменных окружения.

TrustLens — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить TrustLens в Claude Desktop, Claude Code или Cursor?

Открой TrustLens на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare TrustLens with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории ai