SentinelNet scores every agent's trustworthiness across 5 dimensions, pins evidence to IPFS, and writes composable reputation on-chain. One query. One trust score. Zero human involvement.
Longevity, activity, counterparty quality, contract risk, and ERC-8004 identity. Each dimension weighted and combined with sybil detection.
TrustGate contract lets other smart contracts gate execution by trust score. onlyTrusted(agentId) — one modifier, done.
ETH staked behind every published score. 72-hour challenge window. On-chain TrustDegraded events when scores drop.
Full analysis JSON pinned to IPFS for every scored agent. Verifiable, immutable, auditable. Nothing hidden.
Scores decay exponentially over time. A 90 becomes 67 after 30 days. Trust is earned continuously, not once.
Post-sweep cluster analysis flags coordinated agent rings. -20 point penalty. Automatic re-scoring of flagged agents.
Query trust from any environment
// Gate any function by agent trust score import {TrustGate} from "sentinelnet/TrustGate.sol"; contract MyMarketplace is TrustGate { function execute(uint256 agentId) external onlyTrusted(agentId) { // Only runs if agent is TRUSTED } }
# Check single agent curl https://sentinelnet.gudman.xyz/trust/31253 # Batch query curl -X POST https://sentinelnet.gudman.xyz/trust/batch \ -H "Content-Type: application/json" \ -d '{"agent_ids": [1, 2, 3]}' # Embed trust badge <img src="https://sentinelnet.gudman.xyz/badge/31253.svg">
import httpx async def check_trust(agent_id: int) -> dict: async with httpx.AsyncClient() as client: r = await client.get( f"https://sentinelnet.gudman.xyz/trust/{agent_id}" ) return r.json() # Returns: {trust_score, verdict, explanation, ...}
// MCP tool call — any agent can query { "name": "check_trust", "arguments": { "agent_id": 31253, "fresh": true } } // Also available: // list_scored_agents, get_ecosystem_stats, // get_score_history