Skip to main content
Use this guide when you want a public agent flow: register an agent, grant scoped permissions, and reuse those proofs in your application or MCP workflows. Registering an agent and approving access are separate steps — one person can do both, or a publisher can register and a different approver can sign access approval. No wallet “linking” is required between those roles. See Agent concepts. If you are using MCP, the easier default is usually:
  1. neus_agent_create
  2. Open the hosted URL it returns
  3. neus_agent_link
Use the lower-level SDK flow below only when you are intentionally building a custom integration.

1. Register the Agent

Use agent-identity to register an AI or automation agent:
await client.verify({
  verifier: 'agent-identity',
  data: {
    agentId: 'my-agent',
    agentWallet: '0x...',
    agentChainRef: 'eip155:8453',
    agentType: 'ai',
    description: 'My AI assistant',
    capabilities: ['web-search'],
    instructions: 'System prompt (max 4000 chars)',
    skills: ['web-search', 'code-execution'],
    services: [
      { name: 'metrics', endpoint: 'https://metrics.example.com/v1', version: '1.0' }
    ]
  },
  walletAddress: agentWallet,
});

Main Fields

FieldRequiredDescription
agentIdYesUnique agent identifier (1–128 chars)
agentWalletYesAgent wallet
agentChainRefYes in data, or set chain or chainId on the verification requestCAIP-2 chain for the agent wallet
agentLabelNoHuman-readable display name (max 128 chars)
agentTypeNoai, bot, service, automation, or agent
descriptionNoAgent description (max 500 chars)
capabilitiesNoList of capabilities (max 32 items)
instructionsNoSystem prompt (max 4000 chars)
skillsNoList of skills (max 48 items)
servicesNoService endpoints (max 16 items)

2. Delegate Authority

Use agent-delegation to grant permissions to an agent:
await client.verify({
  verifier: 'agent-delegation',
  data: {
    controllerWallet: '0x...',  // API field: approving account; must match signer
    controllerChainRef: 'eip155:8453',
    agentWallet: '0x...',
    agentChainRef: 'eip155:8453',
    scope: 'payments:x402',
    permissions: ['execute', 'read'],
    // Token base units (no decimal point). 25 USDC → SDK toAgentDelegationMaxSpend('25', 6)
    maxSpend: '25000000',
    allowedPaymentTypes: ['x402'],
    receiptDisclosure: 'summary',
    expiresAt: Date.now() + 7 * 24 * 60 * 60 * 1000, // 7 days
    instructions: 'Policy instructions for the agent',
    skills: ['market-data']
  },
  walletAddress: controllerWallet,
});
The signing split is simple:
  • agent-identity is signed by the agent wallet.
  • agent-delegation is signed by the approving account (the wallet that matches controllerWallet in the payload).

Main Fields

FieldRequiredDescription
controllerWalletYesApproving account; must match signer
controllerChainRefYes in data, or set chain or chainId on the verification requestCAIP-2 chain for the controller
agentWalletYesAgent wallet
agentChainRefYes in data, or set chain or chainId on the verification requestCAIP-2 chain for the agent
agentIdNoReference to registered agent
scopeNoPermission scope (e.g., payments:x402)
permissionsNoAllowed actions
maxSpendNoWhole-number string in token base units (e.g. USDC: six decimal places). Use toAgentDelegationMaxSpend from @neus/sdk.
allowedPaymentTypesNoPayment types allowed
receiptDisclosureNosummary, full, or none
expiresAtNoExpiration timestamp

3. Consume the Proofs

Once both proofs exist, use MCP or API checks to confirm whether the agent is registered and what it is allowed to do. Treat the agent wallet as the anchor for related trust signals.

Use Cases

Use CaseDescription
AI assistantsRegister and control AI agents
Payment delegationAllow agents to spend on your behalf
AutomationGrant scoped permissions to bots