describe.net

Buy the composition, not the number

This page is the live one: prices, probes and curls are read from the running service, so they change. The reference that does not — every guide plus a dated, citable snapshot of the OpenAPI schema — is the documentation hub. docs.describe.net →

What you buy composition Not the score — the raters behind it: who, how often, in which facet (what they rated), dated, with its transaction.
What it costs —
How you pay x402 No account, no key: the first call answers 402, sign EIP-3009 USDC, repeat. The facilitator pays the gas.
Why it is worth it —

The decision loop The price table What really works today

Start in 30 seconds

The minimum, in one block


    

This block stays in English: agents diff it.

No keys, no accounts: paid routes answer 402 with the challenge.

The table

Prices, read live

Resource USD Why that price

The moment of use, precisely

Between GET /tasks/{id}/applications and POST /tasks/{id}/assign

Those two routes are your marketplace's, not ours — after assign the money is committed, so vet before.

If in the response… Then Why
concentration == null do not decide with this It is not «no concentration»: it is the signal going down. The API degrades the secondary aggregate rather than failing the whole response.
distinct_raters < 3 no evidence, which is not zero 7,577 of 15,763 wallets have exactly one rater, and 22 % of those average a flat 100 — against 1 % among those with three.
total_reviews / distinct_raters ≥ reading_policy.campaign_per_rater campaign: discard Over the 3,000 best-ranked wallets the median is 1.00 and the p90 is 2.0: 10 lets 99.2 % through. And careful: top_client_share alone does not detect it — the largest campaign has a share of ~0.14 and any threshold lets it pass.
top_client_share ≥ reading_policy.top_share one single voice Agent base/888 has 1,200 ratings where a single one wrote 98.4 %. It scores 99.23.
self_rated.gap > 15 it overrates itself: lower the priority Self-rating stays out of the average but is published with its gap. «It gives itself 100, its counterparties give it 83.3.»

Why these five rules, narrated: method →

x402

How to pay

The first call returns the challenge, not an error.

  1. Read the challenge

    challenge carries amount, token, recipient and chains — read values from there, never from a cached table.

  2. Verify the recipient against the pinned one

    The only address this service ever asks to be paid at is:

    0xe4dc963c56979E0260fc146b87eE24F18220e545

    Compare it against the challenge's recipient. If they differ, do not pay — ask first, never sign.

  3. Sign an EIP-3009 authorization

    TransferWithAuthorization for that amount, to that recipient, base64. From a wallet MCP: ows_sign_eip3009 or pay_x402.

    from uvd_x402_sdk import X402Client, X402Config
    
    client = X402Client(config=X402Config(recipient_evm=recipient))
    client.connect_with_signer(...)          # your key never leaves your side
    header = client.create_authorization(    # -> the base64 string
        pay_to=recipient, amount_usd=Decimal(amount), chain_name="base",
    )
  4. Repeat the SAME call with the header

    Same arguments plus the header — the facilitator pays the gas.

    A 4xx after paying is a spent credential: re-ask and sign the new challenge.

From your MCP client

MCP tools

Tool What it answers
describe_pricing FREE. What each thing costs, the live size of the index, the policy versions in force. Start here.
describe_check_wallet FREE. Does this wallet have reputation, and on which chains — per chain: identities, score, ratings, distinct raters. The gate before any paid call: if it returns nothing, there is nothing to buy.
describe_resolve FREE. What is this string and where does it exist — an EVM address, a Solana base58 id or an agent id. Answers what it was read as and one row per chain, each with the wallet that owns it there. The same id is a different agent on every chain, so it never answers in the singular.
describe_lookup_wallet The reputation of a wallet adding up every chain, with its composition. snapshot=True leaves a replayable receipt.
describe_lookup_agent One agent and every rating with its transaction — revoked ones included and marked. The verification tool.
describe_history How the score moved, dated by on-chain time, never by when we indexed it.
describe_facets Reputation per area against the index average. Without wallet, the global reference table.
describe_leaderboard The top ordered by evidence, with the number that decided the order in plain sight.
{
  "mcpServers": {
    "describe-net": {
      "command": "python",
      "args": ["/absolute/path/to/the/repo/mcp/server.py"],
      "env": { "DESCRIBENET_API_URL": "https://api.describe.net" }
    }
  }
}

Thirteen tools (verified 2026-08-23): five are priced like the routes behind them; the other eight never charge. Leaderboard and facets also have free variants (first page / no wallet). The full, live list is the server card.

The server never signs or holds funds; every tool calls the canonical endpoint.

From a browser, seven of these calls are already WebMCP tools (navigator.modelContext); the metered ones hand you the 402 challenge, recipient pre-checked. They cannot sign.

Reference: Swagger /docs · ReDoc · openapi.json · auth.md · server-card · skill.md · llms.txt

Before you integrate

Measured traps, not hypothetical ones

Trap In one line
No ratings ≠ zero The field arrives null: no evidence and rated badly are different facts.
declared_type is not a type 84 % of agents are unknown — never treat it as verification.
tag1 is free text on-chain The longest facet is 471 characters — escape everything that comes from the chain.
undated_reviews > 0 The last point of the series can legitimately sit below the profile final_score.
The leaderboard does not order by average It orders by the Bayesian mean; shrunk_score and distinct_raters travel in the response.
The policies are versioned separately policy_version moves scores; the other two policies only move lists.

The measured story behind each one: method →

Measured status

What this browser measured today

The question Measured from this browser What it means for you

Try it now

Try it: four curls

curl https://api.describe.net/health
curl https://api.describe.net/leaderboard
curl https://api.describe.net/stats/facets
curl https://api.describe.net/reputation/wallet/0x715dc035ffb97dd7bb4095c6670138ba05bb4e6d

See the index Open that profile