How Solidus Agents works.
In four steps plus one verification call — from operator KYC to an on-chain, revocable agent credential.
Operator KYC
One credential, reused for every agent the operator runs.
The human or org behind the agent completes KYC once at verify.solidus.network. See how it links →
Agent DID
One SDK call issues did:solidus for the agent.
Every downstream credential and on-chain record points back to this identifier. See the call →
Identity NFT
The DID is anchored on-chain as an ERC-8004 Identity NFT.
Solidus handles gas and signing — the NFT id and tx hash are the public record. See the anchor →
BBS+ credential
Capabilities and scope, signed and anchored to the Validation Registry.
BBS+ lets a relying party see only the claim it needs. See selective disclosure →
Verify the operator, once.
Before an agent gets a credential, the human or org behind it completes operator KYC at verify.solidus.network. The result is a reusable KYC credential — you link it to every agent you run. Solidus Agents does not perform KYC itself; it consumes verify's credential.
verify.solidus.network1# Confirm the operator's KYC credential exists2curl https://verify.solidus.network/credentials/me \3 -H "Authorization: Bearer $SOLIDUS_OPERATOR_TOKEN"45# → { "kyc": "verified", "credentialId": "vc_4kQ2…tHgAs" }
Generate the agent's DID.
One SDK call registers the agent and issues its did:solidus. The DID is the stable identifier every downstream credential and on-chain record points back to.
1import { createAgentIdentity } from '@solidus-network/agent-identity';23const solidus = createAgentIdentity({ baseUrl: 'https://agents.solidus.network', token });45const agent = await solidus.createAgent({6 capabilities: ['browse', 'pay'],7});89console.log(agent.did);10// did:solidus:testnet:5dK3fP7vLm8Qw2xNz9Rb4YcJ6tHgAs
Mint the ERC-8004 Identity NFT.
The DID is anchored to the ERC-8004 Identity Registry as an on-chain Identity NFT. Poll status until the anchor confirms; the returned NFT ID and tx hash are the public record.
1const { anchor } = await agents.anchor(agent.did, {2 chain: 'ethereum-mainnet',3});45// Poll until confirmed6const status = await agents.anchorStatus(anchor.id);7// { status: 'confirmed',8// nftId: 'eip155:1:0x9A3f…4b2C:8004:1420',9// tx: '0x7a3f…b21c', gas: '0.0021 ETH' }
Issue a BBS+ credential.
Attach claims — capabilities, scoped permissions, operator linkage — and sign them as a BBS+ credential. BBS+ enables selective disclosure: a relying party sees only the claim it needs. The credential is anchored to the ERC-8004 Validation Registry.
1const credential = await agents.issueCredential(agent.did, {2 type: 'AgentCapability',3 claims: {4 scope: ['payments:execute', 'data:read'],5 expiry: '2026-12-31T23:59:59Z',6 },7});8// credential.id = 'cap_3fK9…tHgAs'9// anchored → ERC-8004 Validation Registry
What the relying party actually sees.
The issued credential carries the full claim set. BBS+ lets the agent disclose only the subset a given relying party needs — the rest of the payload never leaves the wallet.
1{2 "type": "AgentCapability",3 "agent": "did:solidus:testnet:5dK3…tHgAs",4 "operator": "did:solidus:…tHgAs",5 "operatorKyc": "verified",6 "network": "ethereum-mainnet",7 "scope": ["payments:execute", "data:read"],8 "expiry": "2026-12-31T23:59:59Z"9}
1{2 "operatorKyc": "verified",3 "network": "ethereum-mainnet",4 "scope": ["payments:execute"]5}
Verifying an agent — the RP side.
No Solidus account required. Verify against the on-chain Validation Registry.
1import { agents } from '@solidus-network/agent-identity';23const result = await agents.verify('cap_3fK9…tHgAs');4// { valid: true,5// agent: 'did:solidus:…tHgAs',6// scope: ['payments:execute'],7// anchoredAt: 'eip155:1:0x9A3f…4b2C:8004:1420' }
Every BBS+ credential is also dual-emitted as an EAS attestation with the same payload — EVM-native consumers like Verax and Karma3 see it with zero Solidus integration.
See integrationsRegister your first agent in under 5 minutes.
One operator KYC. Every agent you run carries a portable, revocable credential — anchored to ERC-8004.
Free for individual developers · Solidus testnet included · No card required

