{
  "name": "AI2Human B20 Agent Skill",
  "version": "0.1.0",
  "status": "preview",
  "description": "Generate B20 token configuration bundles with roles, policies, supply caps, freeze controls, mint eligibility, and AI2Human proof inputs.",
  "homepage": "https://ai2human.io",
  "skill": "https://ai2human.io/agent/b20-skill.md",
  "demo": "https://ai2human.io/agent/b20",
  "openclawTest": "https://ai2human.io/agent/b20/openclaw-test.md",
  "example": "https://ai2human.io/agent/b20/examples/rwa-community-token.json",
  "officialDocs": {
    "baseB20": "https://docs.base.org/base-chain/specs/upgrades/beryl/b20",
    "baseStd": "https://github.com/base/base-std"
  },
  "positioning": "B20 gives tokens native rules. AI2Human gives those rules verifiable inputs.",
  "api": {
    "demo": {
      "method": "GET",
      "url": "https://ai2human.io/agent/b20",
      "description": "Human-readable B20 Skill demo page."
    },
    "preview": {
      "method": "POST",
      "url": "https://ai2human.io/api/agent/b20/preview",
      "contentType": "application/json",
      "description": "Dry-run a B20 Agent Skill request. Returns token config, role config, policy config, proof requirements, deployment plan, missing inputs, and warnings. Does not broadcast transactions or custody keys.",
      "requiredRecommendedFields": [
        "intent",
        "token.name",
        "token.symbol",
        "token.variant",
        "token.maxSupply",
        "token.initialAdmin",
        "roles.minter",
        "roles.pauser",
        "roles.metadata",
        "roles.compliance",
        "proof.requiredFor"
      ],
      "response": {
        "tokenConfig": "B20 variant, metadata, supply cap, factory method, and salt hint.",
        "rolesConfig": "B20 role assignments and reasons.",
        "policyConfig": "PolicyRegistry scopes and allowlist/blocklist strategy.",
        "proofRequirements": "AI2Human proof tasks and memo-ready proof output.",
        "deploymentPlan": "initCalls plan and safe deployment checklist.",
        "missingInputs": "Exact values an agent must request before proceeding.",
        "warnings": "Safety and B20 activation notes."
      }
    }
  },
  "b20Surface": {
    "variants": ["ASSET", "STABLECOIN"],
    "baseRoles": [
      "DEFAULT_ADMIN_ROLE",
      "MINT_ROLE",
      "BURN_ROLE",
      "BURN_BLOCKED_ROLE",
      "PAUSE_ROLE",
      "UNPAUSE_ROLE",
      "METADATA_ROLE"
    ],
    "assetExtraRole": "OPERATOR_ROLE",
    "policyScopes": [
      "TRANSFER_SENDER_POLICY",
      "TRANSFER_RECEIVER_POLICY",
      "TRANSFER_EXECUTOR_POLICY",
      "MINT_RECEIVER_POLICY"
    ],
    "policyTypes": ["ALLOWLIST", "BLOCKLIST"],
    "memoUse": "Use B20 memo-bearing entrypoints with an AI2Human proofHash when proof-linked audit trails are needed."
  },
  "safeRules": [
    "Preview before deployment.",
    "Do not broadcast transactions from this skill.",
    "Do not request or expose private keys.",
    "Do not invent admin wallets or policy IDs.",
    "Validate policyExists(policyId) before attaching a policy to a B20 scope.",
    "Use AI2Human proof requirements for eligibility, role assignment, allowlist membership, and review signals."
  ]
}
