Everything you need to integrate your agent with the Trust Registry.
Get your agent a trusted identity in 60 seconds.
curl -X POST https://just.callthe.dev/api/agents \
-H "Content-Type: application/json" \
-d '{
"name": "My Inference Bot",
"description": "GPT-class inference service",
"capabilities": ["inference", "code-review"],
"endpoint": "https://api.mybot.com/v1"
}'
{
"did": "did:web:just.callthe.dev:agent:x7kQ9mBz...",
"agentId": "x7kQ9mBz...",
"apiKey": "tr_9xvKSi...", β Save this! Shown only once.
"privateKey": "8bd8be32b5...", β Save this! Shown only once.
"didDocument": { ... }
}
curl -X POST https://just.callthe.dev/api/agents/YOUR_AGENT_ID/credentials \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "InferenceProvider",
"claims": {
"model": "Qwen3.5-122B-A10B",
"contextWindow": 128000,
"maxTokens": 8192,
"dataResidency": "DE",
"facility": "NATO Bunker, Germany"
}
}'
curl -X POST https://just.callthe.dev/api/credentials/verify \
-H "Content-Type: application/json" \
-d '{"credential": { ...paste the full credential JSON... }}'
{
"valid": true,
"checks": {
"signature": true, β Ed25519 signature valid
"issuer": true, β Issued by just.callthe.dev
"expiration": true, β Not expired
"revocation": true β Not revoked
},
"errors": []
}
Base URL: https://just.callthe.dev
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /api/agents | β | Register a new agent |
GET | /api/agents | β | List agents (paginated, filterable) |
GET | /api/agents/:id | β | Get agent + credentials |
GET | /api/agents/:id/did.json | β | Resolve DID Document |
| Method | Endpoint | Auth | Description |
|---|---|---|---|
POST | /api/agents/:id/credentials | Bearer | Issue a credential |
GET | /api/agents/:id/credentials | β | List agent's credentials |
GET | /api/credentials/:credId | β | Get specific credential |
DELETE | /api/agents/:id/credentials/:credId | Bearer | Revoke credential |
POST | /api/credentials/verify | β | Verify any credential |
| Method | Endpoint | Description |
|---|---|---|
GET | /api/stats | Registry statistics |
GET | /.well-known/did.json | Registry's own DID Document |
GET | /contexts/v1 | JSON-LD context for credentials |
GET /api/agents| Param | Type | Default | Description |
|---|---|---|---|
page | int | 1 | Page number |
limit | int | 20 | Items per page (max 100) |
search | string | β | Search in name & description |
capability | string | β | Filter by capability |
| Type | Required Claims | Optional Claims |
|---|---|---|
InferenceProvider | model | contextWindow, maxTokens, latencyMs, dataResidency, facility |
X402Enabled | walletAddress, networkId | supportedTokens |
DataResidencyEU | country, facility | certifications |
AgentCapability | capability | description, any custom fields |
How to integrate your AI agent with the Trust Registry for agent-to-agent trust.
import requests
REGISTRY = "https://just.callthe.dev"
# 1. Register your agent
resp = requests.post(f"{REGISTRY}/api/agents", json={
"name": "My Inference Agent",
"description": "Qwen3.5-122B inference service",
"capabilities": ["inference", "x402"],
"endpoint": "https://my-agent.example.com/v1"
})
data = resp.json()
agent_id = data["agentId"]
api_key = data["apiKey"] # SAVE THIS!
private_key = data["privateKey"] # SAVE THIS!
print(f"DID: {data['did']}")
# 2. Issue a credential
resp = requests.post(
f"{REGISTRY}/api/agents/{agent_id}/credentials",
headers={"Authorization": f"Bearer {api_key}"},
json={
"type": "InferenceProvider",
"claims": {
"model": "Qwen3.5-122B-A10B",
"contextWindow": 128000,
"dataResidency": "DE"
}
}
)
credential = resp.json()["credential"]
print(f"Credential issued: {credential['id']}")
# 3. Share your DID with other agents
# They can resolve it and verify your credentials:
did_doc = requests.get(f"{REGISTRY}/api/agents/{agent_id}/did.json").json()
const REGISTRY = "https://just.callthe.dev";
// When another agent presents a credential, verify it:
async function verifyAgent(credential) {
const res = await fetch(`${REGISTRY}/api/credentials/verify`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ credential })
});
const result = await res.json();
if (result.valid) {
console.log("β
Agent is trusted!");
console.log("Capabilities:", result.credential.credentialSubject);
} else {
console.log("β Agent verification failed:", result.errors);
}
return result.valid;
}
// Resolve an agent's DID to discover their services
async function resolveAgent(agentId) {
const res = await fetch(`${REGISTRY}/api/agents/${agentId}`);
const agent = await res.json();
console.log(`Agent: ${agent.name}`);
console.log(`DID: ${agent.did}`);
console.log(`Credentials: ${agent.credentials.length}`);
return agent;
}
βββββββββββββββ ββββββββββββββββββββ βββββββββββββββ
β Agent A β β just.callthe.dev β β Agent B β
β (Consumer) β β Trust Registry β β (Provider) β
ββββββββ¬βββββββ ββββββββββ¬ββββββββββ ββββββββ¬βββββββ
β β β
β 1. "I want inference service" β β
βββββββββββββββββββββββββββββββββββββ>β β
β β β
β 2. List agents with capability β β
β GET /api/agents?capability= β β
β inference β β
β<βββββββββββββββββββββββββββββββββββββ β
β [{did, name, credentials...}] β β
β β β
β 3. Verify Agent B's credential β β
β POST /api/credentials/verify β β
βββββββββββββββββββββββββββββββββββββ>β β
β {valid: true, checks: {...}} β β
β<βββββββββββββββββββββββββββββββββββββ β
β β β
β 4. Trust established! Call Agent B directly β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ>β
β β (x402 payment + request) β
β<ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β (response) β
/api/agents?capability=inference to discover agents.The did:web method resolves DIDs via HTTPS. For our registry:
# Registry DID
did:web:just.callthe.dev
β resolves to: GET https://just.callthe.dev/.well-known/did.json
# Agent DID
did:web:just.callthe.dev:agent:x7kQ9mBz
β resolves to: GET https://just.callthe.dev/api/agents/x7kQ9mBz/did.json
# Any W3C DID resolver can resolve these automatically.