{
  "name": "Learn402 Solidity",
  "tagline": "Pay what you learn.",
  "description": "An agentic Solidity refresher sold as x402-paid tutor actions through XDC AI. The website is marketing; the product is the paid API surface agents call.",
  "homepage": "https://learn402.app",
  "roles": [
    "beginner",
    "refresher",
    "examiner",
    "builder"
  ],
  "personas": [
    {
      "id": "solidity_senior",
      "name": "Solidity Senior",
      "tone": "calm, direct, security-aware, and developer friendly",
      "focus": "compile behavior, tests, edge cases, gas, and deploy-time mistakes"
    },
    {
      "id": "foundry_coach",
      "name": "Foundry Coach",
      "tone": "hands-on, test-first, and fast moving",
      "focus": "turning every concept into a small Foundry test or reproducible snippet"
    },
    {
      "id": "audit_mentor",
      "name": "Audit Mentor",
      "tone": "precise, skeptical, and supportive",
      "focus": "security assumptions, boundary values, invariants, and misleading happy paths"
    },
    {
      "id": "protocol_builder",
      "name": "Protocol Builder",
      "tone": "systems-minded, pragmatic, and product-aware",
      "focus": "how a Solidity primitive behaves inside tokens, DeFi flows, governance, and upgrades"
    }
  ],
  "tracks": [
    {
      "id": "foundation",
      "name": "Solidity Foundation",
      "start": 1,
      "end": 35
    },
    {
      "id": "practice",
      "name": "Projects and Common Mistakes",
      "start": 36,
      "end": 38
    },
    {
      "id": "intermediate",
      "name": "Intermediate Solidity",
      "start": 39,
      "end": 54
    },
    {
      "id": "defi",
      "name": "DeFi Primitives",
      "start": 55,
      "end": 68
    },
    {
      "id": "evm",
      "name": "EVM and Upgradeability",
      "start": 69,
      "end": 79
    },
    {
      "id": "governance",
      "name": "Governance and Compound",
      "start": 80,
      "end": 89
    },
    {
      "id": "advanced",
      "name": "Gas, Testing, Cryptography",
      "start": 90,
      "end": 101
    }
  ],
  "lessonCount": 101,
  "progressCredits": {
    "unit": "non-transferable Learn402 progress credit",
    "mintRule": "1 credit per $0.01 USDC spent on learning actions",
    "burnUse": "milestone certificate settlement preview",
    "transferable": false,
    "marketValue": "none"
  },
  "milestones": [
    {
      "id": "foundation-spark",
      "name": "Foundation Spark",
      "track": "foundation",
      "requiredLessons": 5,
      "requiredQuizCorrect": 4,
      "certificateLevel": "Starter"
    },
    {
      "id": "foundation-core",
      "name": "Foundation Core",
      "track": "foundation",
      "requiredLessons": 15,
      "requiredQuizCorrect": 12,
      "certificateLevel": "Core"
    },
    {
      "id": "foundation-complete",
      "name": "Foundation Complete",
      "track": "foundation",
      "requiredLessons": 35,
      "requiredQuizCorrect": 28,
      "certificateLevel": "Foundation"
    }
  ],
  "certificatePolicy": {
    "network": "XDC",
    "platformFee": "30%",
    "refundPreview": "70% of spend after eligible milestone and progress-credit burn",
    "status": "preview only until on-chain mint, burn, and refund settlement are wired"
  },
  "x402": {
    "gateway": "https://api.xdcai.tech/x402/connect/<serviceId>",
    "settlement": "USDC on XDC via XDC AI Gateway"
  },
  "actions": [
    {
      "name": "session.start",
      "priceUSDC": "0",
      "method": "POST",
      "path": "/api/start"
    },
    {
      "name": "lesson.list",
      "priceUSDC": "0",
      "method": "GET",
      "path": "/api/lessons"
    },
    {
      "name": "lesson.open",
      "priceUSDC": "0",
      "method": "GET",
      "path": "/api/lesson/:id"
    },
    {
      "name": "quiz.generate",
      "priceUSDC": "0.01",
      "method": "GET",
      "path": "/api/quiz/:id"
    },
    {
      "name": "quiz.grade",
      "priceUSDC": "0.01",
      "method": "POST",
      "path": "/api/grade/:id"
    },
    {
      "name": "hint.give",
      "priceUSDC": "0.02",
      "method": "GET",
      "path": "/api/hint/:id"
    },
    {
      "name": "tutor.card",
      "priceUSDC": "0.03",
      "method": "POST",
      "path": "/api/tutor/:id"
    },
    {
      "name": "exercise.generate",
      "priceUSDC": "0.05",
      "method": "GET",
      "path": "/api/exercise/:id"
    },
    {
      "name": "exercise.review",
      "priceUSDC": "0.05",
      "method": "POST",
      "path": "/api/review/:id"
    },
    {
      "name": "progress.preview",
      "priceUSDC": "0",
      "method": "POST",
      "path": "/api/progress/preview"
    },
    {
      "name": "certificate.preview",
      "priceUSDC": "0",
      "method": "POST",
      "path": "/api/certificate/preview"
    }
  ]
}