Skip to main content

1. Get an API key

Sign up at agentscore.com/dashboard to get your API key. POST /v1/assess and POST /v1/sessions are available on every tier including Free, gated by monthly quota; see pricing for current quotas and rate limits.

2. Verify the buyer behind an agent

Call POST /v1/assess with a wallet address and a policy. AgentScore resolves the operator behind the wallet and returns an explicit allow/deny decision against your policy:
curl -X POST https://api.agentscore.com/v1/assess \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "0xdb5aa553feeb2c3e3d03e8360b36fb0f7e480671",
    "policy": { "require_kyc": true }
  }'
The address can be EVM (0x... hex) or Solana (base58); the network is detected from the format. Beyond require_kyc, a policy can require an age band, a sanctions-clear result, and an allowed jurisdiction list.

3. Read the decision

Response abbreviated; see POST /v1/assess for the full format.
{
  "decision": "allow",
  "decision_reasons": []
}
A deny carries machine-readable decision_reasons (for example kyc_required, sanctions_flagged, jurisdiction_restricted) so your code, or the agent, knows what to do next.

4. Enforce in your application

const assessment = await fetch("https://api.agentscore.com/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
This is a minimal raw-API integration. For production merchants, use AgentScore Commerce (Node.js) or AgentScore Commerce (Python); they ship a drop-in identity gate that auto-routes fixable compliance reasons (kyc_required, kyc_pending, kyc_failed) into a self-service verification flow (mints a session, returns verify_url + poll_secret, agent polls for a fresh operator_token), and surfaces contact_support for unfixable reasons (sanctions_flagged, age_insufficient, jurisdiction_restricted). The raw decision === "deny" example above collapses every denial into a single bare 403, which works for prototyping but loses the structured agent-recovery contract.

5. Optional: reputation signal

Alongside the identity decision, GET /v1/reputation returns an on-chain trust score (0 to 100) and letter grade for a wallet. It is a supplementary signal, not the gate; lead with assess and reach for reputation only when you want extra on-chain context.
curl -H "X-API-Key: your-api-key" \
  https://api.agentscore.com/v1/reputation/0xdb5aa553feeb2c3e3d03e8360b36fb0f7e480671
See GET /v1/reputation for the response format.

Next steps

Agentic Commerce Quickstart

Merchant side: drop-in AgentScore Gate middleware, Martin Estate as the worked example.

AgentScore SDK (TypeScript)

Official Node.js / TypeScript client.

AgentScore SDK (Python)

Official Python client with async support.

AgentScore Commerce (Node.js)

Identity middleware + payment helpers + 402 builders for Hono, Express, Fastify, Next.js, and Web Fetch.

AgentScore Commerce (Python)

Identity middleware + payment helpers + 402 builders for FastAPI, Flask, Django, AIOHTTP, and Sanic.

AgentScore Pay (MCP Server)

Add identity checks to Claude and Cursor.

API Reference

Full endpoint documentation.