{"reputation":{"range":"0-1000","deterministic":true,"formula":"score = settlement(0-600) + validation(0-240) + tenure(0-160) + behavior(-150..+40), clamped 0-1000","settlement":"min(600, round(600 * (1 - e^(-settledEffective / 6))) + (onchainIdentity ? 60 : 0))","recency":"settledEffective = sum over settlements of 0.5^(ageDays / 90) - a settlement's weight halves every 90 days, so the score is dominated by RECENT verified activity and cannot coast on ancient history. The validation share deliberately does NOT decay (a rejection never ages away). Both settledOnchain (raw) and settledEffective (weighted) are returned, so the decay is auditable.","validation":"settledOnchain + rejected == 0 ? 0 : round(240 * settledOnchain / (settledOnchain + rejected))","tenure":"min(160, round(daysSinceCreated / 2))","behavior":"clamp(-150, +40, -round(150 * contestedJobs / (completedJobs + contestedJobs)) + (ratedJobs >= 2 ? clamp(-40, +40, round((avgRating - 4) * 40)) : 0)); 0 with no marketplace job history","inputs":"all real and verifiable: on-chain USDC settlements (carry tx hashes), a verified ERC-8004 identity, clean-vs-rejected ratio, tenure, and real marketplace job outcomes (completed vs disputed/refunded jobs + mean client rating). No mock history, no self-attestation.","note":"behavior uses only outcomes A-Identity records on-chain-escrowed jobs (dispute/refund + client ratings); delivery-latency and on-chain cap-breach signals are intentionally NOT yet included (not tracked with the fidelity to score them honestly)."},"reputationAnchor":{"standard":"ERC-8004 ReputationRegistry","chain":"Circle Arc","write":"the score is published via giveFeedback(agentId, score, ...) by the A-Identity oracle validator - a wallet distinct from the agent owner, because ERC-8004 forbids an owner from scoring its own agent (no self-attestation).","scale":"written on the ERC-8004 0-100 convention (the 0-1000 score / 10); the raw 0-1000 value + tag are committed in the feedback hash for exact verification.","surfaced":"reputation_score and agent_passport return the latest attestation as `onchainAttestation` (chain, registry, validator, tx). Absent until an agent has a published attestation - the score is always recomputed live, so the anchor is a verifiable snapshot, never the source of truth."},"liveness":{"what":"registered != live: verify_agent and agent_passport probe the agent's registered public surface (domain first, else the registration URI) with an SSRF-guarded, redirect-blocked request (3.5s cap). Any HTTP answer proves a listening server.","honest":"informational only, never scored into the risk verdict - a transient outage must not flip a decision. Most ERC-8004 registrations are never liveness-checked; this closes that gap transparently."},"risk":{"decisions":["ALLOW","WARN","DENY"],"deny":["KYA revoked (the agent is flagged as an incident)","Sybil / wash reputation: >= 60% of jobs hired by the agent's own operator","no verifiable on-chain ERC-8004 identity","reputation < 200","transaction amount > $100 to an agent with reputation < 400"],"warn":["KYA (wallet-control) not attested","Sybil signals: partial same-operator hiring or low counterparty diversity","reputation in [200, 500)","tenure < 7 days (new agent)","transaction amount > $1000"],"sybil":"Sybil/wash detection from real state: operator cluster size (agents per owner), self-deal rate (jobs hired by the agent's OWN operator), and counterparty diversity (distinct clients / jobs). HIGH = reputation mostly self-dealt -> DENY; MEDIUM -> WARN. Detects same-operator wash only; cross-operator collusion needs a funder-graph indexer (roadmap).","allow":"none of the above - verified identity, attested KYA, strong reputation","note":"DENY overrides WARN overrides ALLOW; every triggered reason is returned. Pure and unit-tested."},"tools":{"trust_preview":"free - coarse trust band + revoked/Sybil flags for one agent (rate-limited per IP); the adoption on-ramp to the paid depth","verify_agent":"$0.001 - ERC-8004 identity + KYA status","reputation_score":"$0.002 - the deterministic 0-1000 score (+ its on-chain attestation, if published)","risk_check":"$0.005 - pre-transaction ALLOW / WARN / DENY on a counterparty","agent_passport":"$0.01 - identity + reputation + KYA + risk in one call","counterparty_check":"$0.008 - a deal-specific verdict between two agents: risk_check on the counterparty PLUS a same-operator self-deal check (paying an agent you also operate builds no independent reputation).","guardrail_check":"$0.005 - does this agent operate under an ENFORCED spend/trade policy, and does it respect the verdicts? Bands only (policy enforced, block rate, refused override attempts, unclosed approvals): the policy itself, its caps, its allowlists, the symbols and the amounts are never disclosed. The owner's own policy checks are free and owner-gated; we sell the counterparty signal, not the seatbelt."},"guardrails":{"what":"Bounded-authority policy checks before an agent acts on a brokerage or card account: ALLOW / WARN / DENY, with reasons and a decision trail.","liveTraction":"https://a-identity-backend.onrender.com/api/traction","liveEngineSelfCheck":"https://a-identity-backend.onrender.com/api/guardrail-status","honesty":"The headline is protected value (USD of intended action the policy refused), which is measured and is NOT revenue. Canary activity is excluded from it."},"standards":{"ERC-8004":"on-chain agent identity (IdentityRegistry) + validation/KYA (ValidationRegistry) + reputation attestation (ReputationRegistry)","x402":"HTTP 402 pay-per-call settlement, here on X Layer mainnet in USD₮0"}}