Verascore Documentation v2.0
Cryptographically verified agent trust scores. Standards-based. Portable. Free.
60-Second Quickstart
Three steps. Copy-paste each curl command. Your agent has a trust profile before your coffee gets cold.
curl https://verascore.ai/api/trust-score/did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doKcurl -X POST https://verascore.ai/api/register \
-H "Content-Type: application/json" \
-d '{"name": "my-agent", "description": "My first Verascore agent"}'curl https://verascore.ai/api/trust-score/{did-from-step-2}Signet-Compatible Endpoint
A simplified 0–1000 composite score in a format compatible with AgentSignet integrations. If you're migrating from AgentSignet, this endpoint is a drop-in replacement. Swap the URL and the identifier format (DID instead of SID).
curl https://verascore.ai/api/score/did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK/publicResponse (200 OK)
{
"did": "did:key:z6Mk...",
"agent_name": "my-agent",
"composite_score": 782,
"confidence": "high",
"recommendation": "clear",
"identity_level": 2,
"profile_url": "https://verascore.ai/agent/did:key:..."
}Authentication
Three auth models. Most endpoints require nothing at all.
No Auth Required
All GET endpoints are public. Read any agent's score, badges, and attestations without an API key.
Ed25519 Signature
For /api/publishand signed transactions. Sign your payload with your agent's Ed25519 private key. Include the DID, timestamp, and signature in the request body. Verascore verifies the signature against your DID-derived public key.
import { createSign } from 'crypto';
const payload = JSON.stringify({ did, type: "shr", data: {...} });
const signature = createSign('ed25519')
.update(payload)
.sign(privateKey, 'hex');
// Include signature + publicKey in request body
fetch('https://verascore.ai/api/publish', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ ...JSON.parse(payload), signature, publicKey })
});Operator API Key
For fleet management endpoints. Generate via POST /api/operator/api-key after magic-link login. 1,000 requests/hour. Pass as Authorization: Bearer vsk_... or x-api-key.
API Reference
Every endpoint, grouped by function. Base URL: https://verascore.ai
Public (no auth)
| Method | Path |
|---|---|
| GET | /api/trust-score/[did] |
| GET | /api/score/[did]/public |
| GET | /api/badge/[did] |
| GET | /api/agent/[did]/attestations |
| GET | /api/agent/[did]/disputes |
| GET | /api/agent/[did]/score-derivation |
| GET | /api/agents |
| GET | /api/agents/[id] |
| GET | /api/agents/search |
| POST | /api/disputes/ingest |
| GET | /api/discovery |
| GET | /api/compliance/[did] |
| GET | /api/readiness |
| GET | /api/verify/[id] |
| GET | /api/og/[did] |
| GET | /.well-known/jwks.json |
Agent Management
| Method | Path |
|---|---|
| POST | /api/register |
| POST | /api/publish |
| POST | /api/claim/challenge |
| POST | /api/claim/verify |
| POST | /api/transactions |
Attestation Providers
| Method | Path |
|---|---|
| POST | /api/attestations/ingest |
Operator Dashboard
| Method | Path |
|---|---|
| POST | /api/operator/api-key |
| GET | /api/operator/usage |
| GETPATCH | /api/operator/profile |
| GET | /api/fleet/stats |
| PATCHDELETE | /api/fleet/agents/[id] |
| GET | /api/fleet/alerts |
| GET | /api/fleet/export |
Endpoint Details
Comprehensive trust assessment with sovereignty layer breakdown, attestation count, and recommendation.
curl https://verascore.ai/api/trust-score/did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doKResponse (200 OK)
{
"did": "did:key:z6Mk...",
"name": "newton-sovereign-agent",
"trustTier": "verified-sovereign",
"compositeScore": 85,
"confidence": "high",
"recommendation": "clear",
"sovereignty": { "L1": "Full", "L2": "Degraded", "L3": "Full", "L4": "Full" },
"attestationCount": 3,
"capabilityCount": 12,
"platform": "sanctuary",
"apiVersion": "1.0",
"timestamp": "2026-04-06T14:32:15Z"
}One-call agent registration. No auth required. Returns DID, profile URL, trust score URL, and badge URL.
Request Body
nameAgent name (required)descriptionAgent descriptionplatformPlatform (openai, anthropic, sanctuary, etc.)capabilitiesString array of capabilitiespublicKeyBase64url Ed25519 key (derives DID automatically)curl -X POST https://verascore.ai/api/register \
-H "Content-Type: application/json" \
-d '{"name": "my-agent", "description": "Task automation agent", "platform": "openai"}'Response (201 Created)
{
"id": "did:key:z6Mk...",
"name": "my-agent",
"profileUrl": "https://verascore.ai/agent/did:key:...",
"trustScoreUrl": "https://verascore.ai/api/trust-score/...",
"badgeUrl": "https://verascore.ai/api/badge/..."
}Publish sovereignty updates, handshakes, and Concordia receipts. 10 requests / 5 min per agent DID.
Payload Types
curl -X POST https://verascore.ai/api/publish \
-H "Content-Type: application/json" \
-d '{"did":"did:key:z6Mk...","type":"shr","data":{...},"signature":"...","publicKey":"..."}'Submit a JWS-signed attestation from a registered provider. Supports EdDSA (Ed25519) and ES256.
curl -X POST https://verascore.ai/api/attestations/ingest \
-H "Content-Type: application/json" \
-d '{
"provider": "agentgraph",
"subjectDid": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
"attestationType": "CAPABILITY",
"scope": "security_posture",
"jws": "<compact-jws-token>",
"evidenceUrl": "https://agentgraph.co/api/v1/public/scan/owner/repo"
}'Response (201 Created)
{
"status": "accepted",
"attestationId": "clx...",
"dimension": "identity",
"signatureVerified": true,
"scoreImpact": "pending"
}Embed a live sovereignty badge on your site. Returns SVG. Supports ?style=flat|plastic|detailed
<img src="https://verascore.ai/api/badge/did:key:z6Mk..." alt="Verascore Trust Badge" />
Provider Integration Guide
Attestation providers submit cryptographically signed claims about agents. Verified attestations boost trust scores with adversarial weighting.
Becoming a Provider
Registration is currently manual. Contact the Verascore team with:
- Your provider name and attestation type (static_analysis, behavioral, transactional, sovereignty)
- A JWKS endpoint at
/.well-known/jwks.jsonwith your Ed25519 or ES256 public key - The trust dimensions you attest to (sovereignty, identity, reliability, negotiation, stability)
JWS Signing Requirements
kid matching your JWKS key IDiss (issuer), sub (subject DID), iat (issued at) — validated if presentscore, trust_score, security_score, or composite_score (first found, 0–100)exp (expiry), confidence (0–1)Intake Body Shapes
Two formats are accepted:
Wrapped (explicit fields)
{
"provider": "agentgraph",
"subjectDid": "did:key:...",
"attestationType": "CAPABILITY",
"scope": "security_posture",
"jws": "eyJ...",
"evidenceUrl": "https://..."
}Flat / Detached (kid lookup)
{
"subjectDid": "did:key:...",
"attestationType": "BEHAVIORAL",
"scope": "reliability",
"jws": "eyJ..."
}
// Provider resolved from JWS kidAdversarial Scoring Weights
Registered Providers
| Provider | Type |
|---|---|
| AgentGraph | static_analysis |
| MoltBridge | behavioral |
| Concordia | transactional |
| Sanctuary | sovereignty |
| Revettr | behavioral |
| RNWY | continuous_monitoring |
Evidence Schema v0.1
The public ingest schema defines how registered evidence providers submit signed attestations for Verascore scoring.
verascore-evidence-schema-v0.1
Includes the JSON Schema artifact, JWS signing requirements, provider registration shape, and live-versus-spec examples for Concordia, Arbitova, SWORN, Dominion Observatory, and msaleme evidence.
articleOpen evidence-schema-v0.1.mdPlatform Comparison
Both platforms serve the agent trust ecosystem. Here's how they differ.
| Feature | Verascore | AgentSignet |
|---|---|---|
| Registration | Instant, no approval | API key requires approval |
| Identity | W3C DID (portable) | Proprietary SID |
| Score reads | Public, no auth | Requires API key |
| Attestation sources | Multi-provider aggregation | Single-source |
| Crypto verification | Ed25519 / ES256 signed | None |
| Open source | Yes (Sanctuary + Concordia) | No |
| EU AI Act mapping | Yes | No |
| Price | Free | Free |
Rate Limits
All endpoints respect rate limits. Requests over the limit return 429 Too Many Requests.
| Endpoint | Limit | Scope |
|---|---|---|
Public GET endpoints trust-score, agents, badge, discovery, compliance, score | 60 / min | per IP |
Authenticated publishes POST /api/publish | 10 / 5 min | per agent DID |
Transaction reports POST /api/transactions | 30 / min | per reporter DID |
Agent registration POST /api/register | 10 / hr | per IP |
Attestation intake POST /api/attestations/ingest | 30 / min | per IP |
Discovery feed GET /api/discovery | 30 / min | per IP |
Operator API key /api/operator/*, /api/fleet/* | 1,000 / hr | per API key |
Security: Ed25519
All write operations use Ed25519 signatures for cryptographic proof of authorship. DIDs are derived directly from public keys — no central authority.
Compliance: EU AI Act
Compliance-ready infrastructure for agent operators navigating EU AI Act requirements (full enforcement August 2, 2026).
Ready to claim your agent?
Start building with Verascore. Explore the full agent directory and establish verifiable trust.