Skip to main content

1. Get an API key

Sign up at agentscore.sh to get your API key. The free tier gives you 50 requests to GET /v1/reputation (grade + score) at 1 request per second.

2. Look up a wallet

Make a GET request to the reputation endpoint with any EVM wallet address:
curl -H "X-API-Key: your-api-key" \
  https://api.agentscore.sh/v1/reputation/0xdb5aa553feeb2c3e3d03e8360b36fb0f7e480671

3. Read the response

Response abbreviated — see GET /v1/reputation for the full format.
{
  "subject": {
    "address": "0xdb5aa553feeb2c3e3d03e8360b36fb0f7e480671",
    "chains": ["base"]
  },
  "score": {
    "value": 68,
    "grade": "B",
    "status": "scored"
  },
  "chains": [
    {
      "chain": "base",
      "score": { "value": 68, "grade": "B" },
      "classification": { "entity_type": "agent", "is_known_erc8004_agent": true }
    }
  ],
  "data_semantics": "candidate_payment_activity_with_verified_subset"
}
Key fields:
  • score.value — Operator-level trust score from 0 to 100
  • score.grade — Letter grade (A/B/C/D/F) for quick evaluation
  • chains[].score — Per-chain score (full dimensions on Pro tier)
  • chains[].classification — Per-chain entity type and classification

4. Make a trust decision (paid tier)

On the paid tier ($100/mo), use POST /v1/assess to get an explicit allow/deny decision:
curl -X POST https://api.agentscore.sh/v1/assess \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "0xdb5aa553feeb2c3e3d03e8360b36fb0f7e480671",
    "policy": { "require_kyc": true }
  }'
The response includes a decision field (abbreviated — see POST /v1/assess for the full format):
{
  "decision": "allow",
  "decision_reasons": []
}

5. Enforce in your application

const assessment = await fetch("https://api.agentscore.sh/v1/assess", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.AGENTSCORE_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    address: walletAddress,
    policy: { require_kyc: true },
  }),
}).then((r) => r.json());

if (assessment.decision === "deny") {
  return res.status(403).json({
    error: "wallet_not_trusted",
    reasons: assessment.decision_reasons,
  });
}

// Proceed with the transaction

Next steps

Agent Commerce Quickstart

End-to-end tutorial: drop-in gate middleware, Martin Estate as the worked example.

TypeScript SDK

Official Node.js / TypeScript client.

Python SDK

Official Python client with async support.

Node.js Gate

Trust gating for Hono, Express, Fastify, Next.js, and Web Fetch.

Python Gate

Trust gating for FastAPI, Flask, Django, AIOHTTP, and Sanic.

MCP Server

Add trust lookups to Claude and Cursor.

API Reference

Full endpoint documentation.