Developers
Build trust into
every agent interaction.
A REST API, one-file SDKs, an MCP server for AI assistants, signed webhooks, a live widget and on-chain attestations. Start free — no card, no sales call.
REST API
Scores, search, gate and verify.
SDKs
Python and JavaScript, one file each.
MCP server
Trust lookups inside any AI assistant.
Webhooks
Signed alerts when scores move.
Widget & badge
Show a live score anywhere.
Attestations
EIP-712, verifiable on-chain.
Limits
What each plan includes.
Know Your Agent
Signed agent requests.
REST API
JSON over HTTPS at https://neptuv.xyz/api/v1. Send your key as Authorization: Bearer …. Keys never belong in browser code.
GET /agents/{chain}/{id}— full profile, score and reasonsGET /search— by name, category, protocol, minimum scorePOST /gate— allow or deny with your policy (Pro)POST /verify— prove a signed request came from that agent (Pro)POST /attest— signed EIP-712 trust attestation (Platform)GET/POST /incidents,/watchlist,/decisions,/flags,/export
curl -s https://neptuv.xyz/api/v1/agents/base/1203/score \
-H "Authorization: Bearer $NEPTUV_KEY"
{
"agent": "eip155:8453:1203",
"score": 86, "label": "Trusted",
"reasons": { "up": ["Rated by 41 different reviewers", …], "down": [] },
"reports": { "confirmed": 0, "under_review": 0 }
}
SDKs
Copy one file into your project. Each SDK signs agent requests (for agents) and wraps the API with a ready-made guard for your server (for platforms).
JavaScript
Node 18+, Deno, Bun and browsers. Works with viem or ethers. Includes Express middleware.
neptuv.jsMCP server
Give Claude, ChatGPT, Cursor or your own agent native trust lookups. Neptuv speaks the Model Context Protocol over Streamable HTTP at https://neptuv.xyz/mcp (protocol 2025-11-25). It works without a key on the free limits; add a key for gate and verify tools.
| Tool | What it does |
|---|---|
| check_agent | Get an ERC-8004 agent's Neptuv Score (0–100), label, the reasons behind it and any confirmed incident reports. Use before letting an agent act for you or pay you. |
| search_agents | Search ERC-8004 agents by name or task, optionally filtered by category, protocol and minimum score. Results are ranked by Neptuv Score. |
| network_stats | Live totals for everything Neptuv indexes: agents per chain, agents with a name, how many have enough history for a score, labels, reviews and validations. |
| compare_agents | Compare two or three agents side by side: scores, the four signal groups, reviewers and checks. |
| gate_agent | Apply your Neptuv policy (or the rules given here) and get allow/deny with reasons. Needs a Pro or Platform API key. |
| verify_agent_request | Check that a request carrying Neptuv-Agent/Timestamp/Nonce/Signature headers was really signed by that agent's on-chain wallet (and, with a delegation chain, which agent it acts for), then apply your policy. Needs a Pro or Platform key. |
{
"mcpServers": {
"neptuv": {
"url": "https://neptuv.xyz/mcp",
"headers": { "Authorization": "Bearer YOUR_NEPTUV_KEY" }
}
}
}
curl -s https://neptuv.xyz/mcp -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"check_agent","arguments":{"agent":"base:1203"}}}'
Webhooks
Add an HTTPS endpoint in Dashboard → Alerts. Each POST carries X-Neptuv-Event and X-Neptuv-Signature: sha256=…, an HMAC of the raw body with your signing secret. Reject anything that doesn't match.
import hashlib, hmac
def is_from_neptuv(raw_body: bytes, header: str, secret: str) -> bool:
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, header or "")
Widget & badge
Agent owners can show a live Neptuv Score on their site or README. It updates by itself and links to the full explanation. Owners on Builder and up get "Verified by Neptuv".
<iframe src="https://neptuv.xyz/embed/agent/base/1203" width="380" height="120"
style="border:0;max-width:100%" title="Neptuv trust score" loading="lazy"></iframe>
Attestations
On Platform, POST /api/v1/attest (or "attest": true on verify) returns an EIP-712 TrustAttestation signed by Neptuv's attester key. Anyone can check it: the public key is at /.well-known/neptuv-attester.json, and the verifier contract checks it on-chain.
The attester key only signs attestations. It never holds funds and can't move anything.
{
"primaryType": "TrustAttestation",
"domain": { "name": "Neptuv Attestation", "version": "1" },
"message": {
"agentChainId": 8453, "agentId": 1203, "score": 86, "label": 4,
"enoughData": true, "methodVersion": 11,
"issuedAt": 1792780000, "expiresAt": 1792783600
},
"signature": "0x…"
}
Limits
| Plan | API calls | Gate & verify | Policies | Decision log | Attestations | Seats |
|---|---|---|---|---|---|---|
| Free | 100 / day | — | Defaults | — | — | 1 |
| Builder $50/mo | 10K / month | — | Defaults | — | — | 1 |
| Pro $100/mo | 100K / month | Yes | 3 | 30 days | — | 3 |
| Platform $500/mo | 1M / month | Yes | 50 | 365 days | Yes | 10 |
Every response includes X-RateLimit-Limit and X-RateLimit-Remaining. Need more? Talk to us.