daydreamsai

helixa-identity

Register and manage onchain agent identity on Helixa — the ERC-8004 identity and reputation layer on Base. Mint agent souls, set traits and personality, and query cred scores for trust-aware agent interactions. Activate when: Creating onchain agent identity, setting soul traits or personality, querying agent reputation/cred scores, or integrating Helixa identity with Lucid Agents payments and A2A workflows.

daydreamsai 26 10 Updated 3mo ago
GitHub

Install

npx skillscat add daydreamsai/skills-market/helixa-identity

Install via the SkillsCat registry.

SKILL.md

Helixa Identity

Onchain agent identity and reputation on Base (chain ID 8453). Agents mint ERC-8004 souls, define traits and personality, and accumulate cred scores.

Contract

Key Value
Address 0x665971e7bf8ec90c3066162c5b396604b3cd7711
Network Base mainnet (eip155:8453)
RPC https://mainnet.base.org

ABI (relevant functions)

const HELIXA_ABI = [
  'function mintAgent(string name, string framework) external returns (uint256)',
  'function setTraits(uint256 tokenId, string[] keys, string[] values) external',
  'function setPersonality(uint256 tokenId, string personalityType, uint8 creativity, uint8 autonomy, uint8 risk) external',
  'function totalAgents() external view returns (uint256)',
] as const;

Integration with Lucid Agents

import { createAgent } from '@lucid-agents/core';
import { http } from '@lucid-agents/http';
import { payments, paymentsFromEnv } from '@lucid-agents/payments';
import { identity, identityFromEnv } from '@lucid-agents/identity';
import { wallets, walletsFromEnv } from '@lucid-agents/wallet';
import { z } from 'zod/v4';
import { createPublicClient, createWalletClient, http as viemHttp } from 'viem';
import { base } from 'viem/chains';
import { privateKeyToAccount } from 'viem/accounts';

const HELIXA_CONTRACT = '0x665971e7bf8ec90c3066162c5b396604b3cd7711';

const publicClient = createPublicClient({
  chain: base,
  transport: viemHttp('https://mainnet.base.org'),
});

const walletClient = createWalletClient({
  chain: base,
  account: privateKeyToAccount(process.env.AGENT_PRIVATE_KEY as `0x${string}`),
  transport: viemHttp('https://mainnet.base.org'),
});

Schemas

const MintAgentInput = z.object({
  name: z.string().min(1).max(64),
  framework: z.string().default('lucid-agents'),
});

const SetTraitsInput = z.object({
  tokenId: z.number().int().positive(),
  keys: z.array(z.string()).min(1),
  values: z.array(z.string()).min(1),
}).refine(d => d.keys.length === d.values.length, 'keys and values must match');

const SetPersonalityInput = z.object({
  tokenId: z.number().int().positive(),
  personalityType: z.string(),
  creativity: z.number().int().min(0).max(100),
  autonomy: z.number().int().min(0).max(100),
  risk: z.number().int().min(0).max(100),
});

Entrypoints

Mint Agent Identity

agent.addEntrypoint({
  id: 'helixa-mint',
  description: 'Mint an ERC-8004 agent soul on Helixa',
  input: MintAgentInput,
  price: { amount: '0.50', currency: 'USDC', network: 'eip155:8453' },
  handler: async ({ input }) => {
    const hash = await walletClient.writeContract({
      address: HELIXA_CONTRACT,
      abi: HELIXA_ABI,
      functionName: 'mintAgent',
      args: [input.name, input.framework],
    });
    const receipt = await publicClient.waitForTransactionReceipt({ hash });
    return { txHash: hash, blockNumber: receipt.blockNumber };
  },
});

Set Soul Traits

agent.addEntrypoint({
  id: 'helixa-traits',
  description: 'Set soul traits on a minted Helixa agent',
  input: SetTraitsInput,
  price: { amount: '0.25', currency: 'USDC', network: 'eip155:8453' },
  handler: async ({ input }) => {
    const hash = await walletClient.writeContract({
      address: HELIXA_CONTRACT,
      abi: HELIXA_ABI,
      functionName: 'setTraits',
      args: [BigInt(input.tokenId), input.keys, input.values],
    });
    return { txHash: hash };
  },
});

Set Personality

agent.addEntrypoint({
  id: 'helixa-personality',
  description: 'Configure personality parameters for a Helixa agent',
  input: SetPersonalityInput,
  price: { amount: '0.25', currency: 'USDC', network: 'eip155:8453' },
  handler: async ({ input }) => {
    const hash = await walletClient.writeContract({
      address: HELIXA_CONTRACT,
      abi: HELIXA_ABI,
      functionName: 'setPersonality',
      args: [BigInt(input.tokenId), input.personalityType, input.creativity, input.autonomy, input.risk],
    });
    return { txHash: hash };
  },
});

Query Cred Score

Cred scores are Helixa's reputation layer — accumulated through onchain activity, trait consistency, and agent interactions.

agent.addEntrypoint({
  id: 'helixa-cred',
  description: 'Query total registered agents (network health)',
  input: z.object({}),
  handler: async () => {
    const total = await publicClient.readContract({
      address: HELIXA_CONTRACT,
      abi: HELIXA_ABI,
      functionName: 'totalAgents',
    });
    return { totalAgents: Number(total) };
  },
});

Gasless Minting (API)

For agents without Base ETH, Helixa offers a gasless mint endpoint:

const res = await fetch('https://helixa.xyz/api/mint', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: 'my-agent', framework: 'lucid-agents' }),
});
const { tokenId, txHash } = await res.json();

Environment

Variable Purpose
AGENT_PRIVATE_KEY Wallet key for onchain txs (Base)
HELIXA_API_KEY Optional, for gasless mint API

Composability

Helixa identity works with other Lucid Agent extensions:

  • x402 payments — Gate identity services behind USDC micropayments
  • A2A — Agents can verify each other's Helixa cred scores before transacting
  • @lucid-agents/identity — Helixa souls extend the ERC-8004 identity layer with reputation data