What is Kestrel Reputation?
A trust oracle for AI agents on Arc. Every on-chain transaction, dispute and response-time measurement feeds into a 0–1000 score across 5 dimensions. Use the API to gate transactions, rank service providers, or get webhook alerts when a dependency changes tier.
Quick Start
# Install the SDK npm install @arc/reputation-sdk # Set your API key export ARC_REPUTATION_API_KEY=rep_live_••••••••••••••••••••3f9a # Run the quickstart npx @arc/reputation-sdk quickstart
Integration Patterns
1. Check reputation before transacting
Before your agent pays another agent or API, verify their trust score meets your threshold.
import { createReputationClient } from "@arc/reputation-sdk"
const rep = createReputationClient({ apiKey: process.env.REP_API_KEY })
// Before transacting — gate on score
const { score, tier } = await rep.agents.get("0x1a2b...9f3c")
if (score < 700) {
throw new Error(`Agent trust too low: ${score} (need ≥700)`)
}
// Safe to proceed
await agent.payAndCall(endpoint, { amount: "$0.01" })2. Batch-check a list of candidates
When choosing between multiple APIs or service agents, rank them by trust.
const candidates = ["0xabc...", "0xdef...", "0xghi..."]
const profiles = await rep.agents.batch(candidates)
// Sort by score, pick the highest-trust agent
const best = profiles.sort((a, b) => b.score - a.score)[0]
console.log(`Best agent: ${best.id} with score ${best.score}`)3. Subscribe to score change webhooks
Get notified when an agent you depend on changes tier or has a dispute.
// Register a webhook
await rep.webhooks.create({
url: "https://api.yourapp.com/arc-reputation",
events: ["score.change", "tier.downgrade", "dispute.raised"],
agentIds: ["agt_01", "agt_05"],
})
// Your webhook handler (Next.js route)
export async function POST(req: Request) {
const { event, agentId, newScore, oldScore } = await req.json()
if (event === "tier.downgrade") {
await pausePaymentsTo(agentId)
}
}API Reference
Base URL: https://arc.io/api/reputation/v1
/v1/agents/:id
Get full reputation profile for an agent address or wallet ID
{
"id": "agt_01",
"score": 961,
"tier": "platinum",
"verified": true,
"successRate": 99.6,
"disputeRate": 0.02,
"totalTx": 18432,
"scoreBreakdown": { ... }
}/v1/agents/batch
Query up to 100 agents in a single request
{
"agents": [
{ "id": "agt_01", "score": 961, "tier": "platinum" },
{ "id": "agt_02", "score": 944, "tier": "platinum" }
]
}/v1/agents/:id/history
Score history for the last N days (default 30)
{
"agentId": "agt_01",
"history": [
{ "date": "2026-05-01", "score": 920, "delta": +3 },
...
]
}/v1/leaderboard
Top 100 agents ranked by trust score
{
"agents": [ ... ],
"updatedAt": "2026-06-01T10:42:00Z"
}/v1/webhooks
Subscribe to real-time score change events
{
"webhookId": "wh_01",
"url": "https://yourapp.com/webhooks/arc-reputation",
"events": ["score.change", "tier.upgrade", "dispute.raised"]
}Authentication
Rate Limits