Skip to main content
The verifier catalog is code-first. Backend verifierRegistry.js is the single source of truth; the API exposes it:
GET https://api.neus.network/api/v1/verification/verifiers
Code-first: Always use the API response as the source of truth. This page provides use cases and field reference. Full schema and validation rules come from GET /api/v1/verification/verifiers or OpenAPI VerifierData_<id>. Backend: neus-nut/src/services/verification/verifiers/verifierRegistry.js.

By Use Case

What You NeedVerifier(s)Flow
Prove wallet ownershipownership-basicInstant
Prove social account (X, Discord, etc.)ownership-socialInteractive
Prove domain ownershipownership-dns-txtLookup
Prove org membership (Google/Microsoft)ownership-org-oauthInteractive
Gate by NFT ownershipnft-ownershipLookup
Gate by token balancetoken-holdingLookup
Prove smart contract controlcontract-ownershipLookup
Reduce bots (human verification)proof-of-humanInteractive
Link multiple walletswallet-linkInstant
Check wallet risk before paymentswallet-riskLookup
Register AI/automation agentagent-identityInstant
Delegate authority to agentagent-delegationInstant
Moderate content safetyai-content-moderationLookup
Pseudonymous handle bindingownership-pseudonymInstant

Flow Types

FlowMeaningExamples
InstantOne API call, signature onlyownership-basic, agent-identity
InteractiveUser completes OAuth or ZK flow firstownership-social, proof-of-human
LookupAPI checks on-chain or external datanft-ownership, wallet-risk

Verifier Reference

ownership-basic

Use case: Prove you control a wallet. Foundation for content ownership, attestations, and identity.
FieldRequiredTypeUse
ownerYesuniversal-addressMust match signer wallet
contentNostringContent being claimed (max 50KB)
contentHashNo0x64 hexPre-computed hash
contentTypeNostringMIME hint (max 100 chars)
referenceNoobjectLink to resource (url, ipfs, contract, etc.)
provenanceNoobjectHuman/AI/mixed declaration
Example: { "owner": "0x..." } Compatible with: agent-identity, proof-of-human, ai-content-moderation

ownership-social

Use case: Prove you own a social account (X, Discord, GitHub, etc.). Requires hosted checkout—users sign in via NEUS.
FieldRequiredTypeUse
providerYesenumdiscord, github, facebook, x, farcaster, linkedin, telegram, coinbase
internalSocialTokenYesstringFrom hosted flow (do not pass raw OAuth token)
walletAddressNouniversal-addressOptional override
Example: { "provider": "github", "internalSocialToken": "<from-hosted-flow>" } Compatible with: ownership-basic

ownership-dns-txt

Use case: Prove you control a domain by adding a TXT record. Common for org verification and domain-gated access.
FieldRequiredTypeUse
domainYeshostnameDomain to verify
walletAddressNouniversal-addressOptional
Example: { "domain": "example.com" } Compatible with: ownership-basic, agent-identity

ownership-org-oauth

Use case: Prove membership in an organization via Google or Microsoft. For enterprise and team access.
FieldRequiredTypeUse
providerYesenumgoogle, microsoft
internalSocialTokenYesstringFrom hosted flow
walletAddressNouniversal-addressOptional
expectedOrgDomainNohostnameRestrict to org domain
Example: { "provider": "google", "internalSocialToken": "<from-hosted-flow>" } Compatible with: agent-delegation

ownership-pseudonym

Use case: Bind a pseudonymous handle to a wallet. For usernames and display names without revealing identity.
FieldRequiredTypeUse
pseudonymIdYesstringHandle (3–32 chars, [a-z0-9][a-z0-9._-]{1,30}[a-z0-9])
namespaceNostringDefault: neus (max 64 chars)
displayNameNostringHuman-readable name (max 64 chars)
metadataNoobjectExtra data
Example: { "pseudonymId": "alice123" } Compatible with: ownership-basic

nft-ownership

Use case: Gate access by NFT ownership. User must hold a specific NFT (ERC-721/ERC-1155 on EVM, or SPL NFT on Solana). Supported chains: EVM (use chainId) or Solana (use chain: solana:mainnet or solana:devnet)
FieldRequiredTypeUse
contractAddressYesaddressNFT contract (EVM) or mint address (Solana)
tokenIdYesstringToken ID (EVM); omit or use for Solana metadata
chainIdEVMintegerChain (e.g. 8453 for Base)
chainSolanaCAIP-2e.g. solana:mainnet
ownerAddressNoaddressOverride subject
tokenTypeNoenumerc721, erc1155
blockNumberNointegerPoint-in-time block
Example (EVM): { "contractAddress": "0x...", "tokenId": "1", "chainId": 8453 }
Example (Solana): { "contractAddress": "<mint>", "tokenId": "1", "chain": "solana:mainnet" }
Compatible with: token-holding, ownership-basic

token-holding

Use case: Gate access by token balance. User must hold at least minBalance of the token. Supported chains: EVM (use chainId) or Solana (use chain: solana:mainnet or solana:devnet)
FieldRequiredTypeUse
contractAddressYesaddressToken contract (EVM) or SPL mint (Solana)
minBalanceYesstringMinimum balance (e.g. “100”)
chainIdEVMintegerChain
chainSolanaCAIP-2e.g. solana:mainnet
ownerAddressNoaddressOverride subject
blockNumberNointegerPoint-in-time block
Example (EVM): { "contractAddress": "0x...", "minBalance": "100", "chainId": 8453 }
Example (Solana): { "contractAddress": "<mint>", "minBalance": "100", "chain": "solana:mainnet" }
Compatible with: nft-ownership, ownership-basic

contract-ownership

Use case: Prove you own or control a smart contract (owner, admin, or access control role). Supported chains: EVM (chainId)
FieldRequiredTypeUse
contractAddressYesEVM addressContract
chainIdYesintegerChain
walletAddressNoEVM addressOverride subject
methodNoenumowner, admin, accessControl
Example: { "contractAddress": "0x...", "chainId": 8453 } Compatible with: wallet-link, wallet-risk, agent-identity

proof-of-human

Use case: Reduce bots. User completes a human verification flow (e.g. ZK Passport). Requires hosted checkout.
FieldRequiredTypeUse
proofsYesarrayZK proof payload (1–10 items)
queryResultYesobjectProvider result
providerNoenumzkpassport
scopeNostringScope (e.g. [a-zA-Z0-9_-]{1,64})
Example: { "proofs": [...], "queryResult": {...} } (from hosted flow) Compatible with: ownership-basic, ownership-social, ai-content-moderation
Use case: Link a secondary wallet to a primary via signature. For multi-wallet identity and delegation.
FieldRequiredTypeUse
primaryWalletAddressYesuniversal-addressPrimary wallet
secondaryWalletAddressYesuniversal-addressSecondary wallet
signatureYesstringSecondary’s signature
chainYesCAIP-2Chain (e.g. eip155:8453)
signatureMethodYesstringe.g. eip191
signedTimestampYesintegerUnix ms
relationshipTypeNoenumprimary, personal, org, affiliate, agent, linked
labelNostringHuman label (max 64 chars)
Example: { "primaryWalletAddress": "0x...", "secondaryWalletAddress": "0x...", "signature": "0x...", "chain": "eip155:8453", "signatureMethod": "eip191", "signedTimestamp": 1234567890000 } Compatible with: contract-ownership, ownership-basic, wallet-risk, agent-identity

wallet-risk

Use case: Check wallet risk before payments or high-value actions. Uses external provider (e.g. Webacy).
FieldRequiredTypeUse
walletAddressYesEVM or Solana addressWallet to assess
providerNoenumwebacy
chainNoenumeth, base, bsc, pol, opt, arb, sol, ton, sei, sui, btc, stellar
chainIdNointegerChain ID
Example: { "walletAddress": "0x...", "chain": "base" } Compatible with: ownership-basic, proof-of-human, agent-identity

ai-content-moderation

Use case: Verify content safety (images, text). For AI-generated content or user uploads.
FieldRequiredTypeUse
contentYesstringContent to moderate
contentTypeYesenumimage/jpeg, image/png, image/webp, image/gif, text/plain, text/markdown, text/x-markdown, application/json, application/xml
providerNoenumgoogle-vision, google-perspective
Example: { "content": "<base64>", "contentType": "image/jpeg" } Compatible with: ownership-basic, agent-identity, proof-of-human

agent-identity

Use case: Register an AI agent, bot, or automation. ERC-8004 compatible. Foundation for agent delegation.
FieldRequiredTypeUse
agentIdYesstringUnique agent ID (1–128 chars)
agentAccountId or agentWalletOne requiredCAIP-10 or universal-addressAgent’s wallet
agentLabelNostringDisplay name (max 128 chars)
agentTypeNoenumai, bot, service, automation, agent
descriptionNostringHuman description (max 500 chars)
capabilitiesNoarrayCapability strings (max 32 items, each 128 chars)
instructionsNostringInstructions (max 4000 chars)
skillsNoarraySkill IDs (max 48 items, each 64 chars)
servicesNoarrayEndpoints (max 16 items, name + endpoint required)
Example: { "agentId": "my-agent-1", "agentWallet": "0x..." } Compatible with: agent-delegation, ai-content-moderation, ownership-dns-txt, contract-ownership, wallet-link

agent-delegation

Use case: Delegate authority from a controller wallet to an agent. For payments, actions, and scoped access. ERC-8004 compatible.
FieldRequiredTypeUse
controllerWalletYesuniversal-addressDelegating wallet (must match signer). Or use controllerAccountId + agentAccountId (CAIP-10).
agentWalletYesuniversal-addressAgent wallet. Or use agentAccountId with controllerAccountId (CAIP-10).
agentIdNostringAgent ID (1–128 chars)
scopeNostringScope (e.g. payments:x402, max 128 chars)
permissionsNoarrayPermission strings (max 32 items, each 64 chars)
maxSpendNostringMax spend in wei (decimal string)
allowedPaymentTypesNoarrayPayment types (max 8 items)
receiptDisclosureNoenumnone, summary, full
expiresAtNointegerUnix ms expiry
instructionsNostringInstructions (max 4000 chars)
skillsNoarraySkill IDs (max 48 items, each 64 chars)
Example: { "controllerWallet": "0x...", "agentWallet": "0x...", "scope": "payments:x402" } Compatible with: agent-identity, ownership-org-oauth, wallet-risk, wallet-link
BundleVerifiersUse Case
AI trust receiptownership-basic + ai-content-moderation + proof-of-humanAI content with human attestation
Verifiable agentsagent-identity + agent-delegation + wallet-riskAI agents with delegated authority
Community gatingtoken-holding or nft-ownership + proof-of-humanToken/NFT holders with sybil resistance
Org accessownership-org-oauth + ownership-dns-txt + contract-ownershipOrganization and domain verification