wanessalabs standalone production September 8, 2026

CertScroll

Study feed for ten overlapping AI certs with 2,050 cited cards, 3D graph, and Bazantic Model Context Protocol (MCP) gateway with x402 micropayments on Base.

AstroTypeScriptReactThree.jsZodDexieVitestCloudflare PagesModel Context Protocol (MCP)Bazantic Gateway (x402-mpp)
The 3D Question Bank: interactive WebGL mind map connecting 45 concepts and 2,050 questions across 3 layout projections.
The 3D Question Bank: interactive WebGL mind map connecting 45 concepts and 2,050 questions across 3 layout projections.
Stratified Mock Exams Hub: domain-weighted custom exam generator with 15/25/50 presets and live exam simulation.
Stratified Mock Exams Hub: domain-weighted custom exam generator with 15/25/50 presets and live exam simulation.
Concept detail view: focused knowledge map breakdown with difficulty-stratified question options and drill links.
Concept detail view: focused knowledge map breakdown with difficulty-stratified question options and drill links.
Mobile-responsive card feed: vertical swipe reps with on-device spaced repetition and locked concept previews.
Mobile-responsive card feed: vertical swipe reps with on-device spaced repetition and locked concept previews.

Ten AI certifications share most of one syllabus. This is a scroll feed that treats that overlap as the product rather than a coincidence.

The Problem

Preparation for these exams is scattered across provider portals, YouTube and static study guides. The certifications in a cluster share 60 to 80 percent of their foundation, so studying for one should reduce the work for the next. It does not, because nothing is organised around the overlap.

The obvious fix is a large question bank. The obvious way to build one is the reason most free certification questions cannot be used: they are braindumps, meaning real exam items, which are copyrighted and prohibited by every provider’s terms. This site carries the Wanessa Labs name at its own domain, so that route was closed from the start.

What It Is

A feed of questions you answer by tapping, with a spaced-repetition schedule underneath. Miss one and it comes back. Get it right twice and it goes away for a week. Tapping a term in a question opens a concept panel whose definition stays locked until you answer, because for a lot of questions the definition is the answer.

Everything is stored in your own browser. There is no account, nothing is uploaded, and a different browser starts over.

Core Capabilities

Bazantic Gateway & The x402 Machine Payment Protocol (MPP)

Most developer APIs assume a human with a web browser, an email address, and a corporate credit card. Autonomous coding agents (like Claude Desktop, Cursor, Goose, and LLM evaluation harnesses) have none of those. When an agent needs to pull domain-stratified test items to benchmark a new model or verify its own answers, requiring account sign-up and pre-shared API keys creates immediate friction.

CertScroll solves this by exposing its Model Context Protocol (MCP) server through the Bazantic Gateway (https://ai-cert-questions.bazgateway.com) with native x402 / Machine Payment Protocol (MPP) support.

The Dual-Surface Architecture: Human App vs. Agent Gateway

CertScroll runs as a decoupled dual-surface system:

[Human Learner] ──────────► study.wanessalabs.com 
                              └─ Astro 5 SSG + Cloudflare Pages (100% Client-Side IndexedDB)

[AI Agent / IDE] ─────────► ai-cert-questions.bazgateway.com 
                              └─ Bazantic Edge Gateway (Rate limiting, auth, x402-mpp)
                                   ├─ JSON-RPC 2.0 /mcp (Model Context Protocol endpoint)
                                   └─ REST API /api/v1/* (Questions, Grade, Mock Exams)
  1. Human Surface (study.wanessalabs.com): Free, zero backend, zero accounts, no tracking cookies, running entirely on-device via Dexie/IndexedDB.
  2. Agent Surface (ai-cert-questions.bazgateway.com): Reverse-proxied via the Bazantic Gateway marketplace (bazantic.com/gateways/d5uuzskoyjdedbboomfgcxxwti). Exposes structured tool declarations directly to LLMs while metering usage and monetizing autonomous queries without human intervention.

How x402 Machine Payments Work

Instead of traditional monthly subscriptions or human credit card checkouts, Bazantic implements the standard HTTP 402 Payment Required specification over the Base L2 blockchain:

Agent Request (No Token) ──► GET /api/v1/questions?cert=aws-mla-c01
                         ◄── HTTP 402 Payment Required
                             Headers: x402-price: 0.005, x402-asset: USDC, x402-network: base
Agent Signs & Broadcasts ──► Micro-USDC settlement on Base L2 (<$0.001 gas, sub-2s finality)
Agent Retries with Proof ──► GET /api/v1/questions + Authorization: x402 <receipt>
Bazantic Gateway Validates ──► HTTP 200 OK + Verified Syllabus Questions JSON

For developer testing in Claude Desktop or Cursor, Bazantic also supports standard Bearer API key authentication (Authorization: Bearer <key>) with 10 free queries per day for exploratory schema inspection.

Five Core MCP Primitives

The gateway exposes five tool definitions to language models:

ToolParametersRoleUnit Price
get_questionscert, concept, difficulty, limit, maskAnswersRetrieve syllabus-cited questions across 10 certifications.$0.005 / call
grade_questionquestionId, selectedOption, agentReasoningGrade an answer choice (0–3) and evaluate chain-of-thought against leaf citations.$0.002 / call
generate_mock_examcertId, questionCount, maskAnswersGenerate domain-stratified mock exam batches (15, 25, 50 questions).$0.05 / exam
get_concept_blueprintslugTraverse the cross-certification knowledge graph for an AI concept.$0.01 / call
get_matrix_coverage(none)Inspect real-time coverage across 765 reachable cells.$0.001 / call

Preventing Evaluation Contamination (maskAnswers)

A persistent vulnerability in AI benchmarking is data contamination: if an LLM is tested on a question whose correct answer or explanation is present in the payload, the evaluation measures prompt retrieval rather than model capability.

CertScroll’s MCP server provides evaluation integrity through blind evaluation:

1-Click Agent Configuration

Agents connect through standard declarative configurations:

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "certscroll": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-fetch",
        "https://ai-cert-questions.bazgateway.com/mcp"
      ]
    }
  }
}

Cursor IDE (.cursor/mcp.json):

{
  "mcpServers": {
    "certscroll": {
      "url": "https://ai-cert-questions.bazgateway.com/mcp"
    }
  }
}

Every Question Names Its Source

The constraint that shapes the whole project: a card must cite the published guide section it derives from, and the build refuses one that cannot.

That is enforced twice, in two different ways, because one of them is not something software can do.

The build holds a committed copy of each readable guide’s published section tree. A citation has to resolve against a real leaf of that tree, so a question naming a task number that does not exist fails the build rather than shipping. On the first run this caught two questions that had been reviewed by hand, both citing an abbreviated version of a real AWS task title. A gate written to police machine output audited the human on its way past.

The second gate is a person reading the question and confirming it is original. No build can judge that, so it does not pretend to. Machine-written cards ship marked as derived, and the build rejects the reviewer field on them outright: the pipeline is structurally incapable of claiming somebody read something they did not.

The Metric That Charged For Its Own Premise

Coverage is tracked as a matrix of concept by certification by difficulty. Filling it went from 21 questions to 226, and then stalled at 110 empty cells.

Ninety-six of those cells already contained a written question. The matrix counted each certification separately, so a question about temperature filed under one exam was invisible to somebody studying another, and the cell read as empty. The measurement assumed the certifications do not overlap, which is the exact opposite of the premise the site exists to prove.

Marking a question as shared foundation, so it serves every certification its concepts belong to, closed those cells without writing anything new. It also gave the seven certifications whose guides are not machine-readable their first questions: they had zero, permanently, because nothing could be cited against them.

What Testing Did Not Catch

The progress page was rebuilt as an instrument readout: first-try accuracy against how much of the bank it covers, what you got wrong, which concepts are shaky. It shipped with 380 passing tests and a clean type check, and four defects that all died the moment somebody opened the page in a browser.

A class name collided with one further down the same stylesheet and lost the cascade. A media query sized a 600 pixel column against a 2133 pixel window. Question text printed its own link markup on screen. And a card that grows when you answer it sat inside a slide that could not grow, so on a phone the explanation overflowed by up to 492 pixels and scrolling down snapped past to the next question instead of revealing it.

The first attempt at that last one was worse than the bug in a way the bug never was: letting every slide size itself to its contents forces the browser to lay out all 270 of them instead of none. The fix that shipped grows only the slides you have actually answered.

Tradeoffs

The bank grows only as fast as it can be cited. Questions derived with AI assistance ship flagged with an unreviewed indicator on screen until verified line-by-line by a human, which is the honest version of shipping them rather than pretending someone checked what they did not.

Mock exams do not simulate arbitrary 65-question multi-hour slogs: they focus on high-yield 15, 25, and 50 question stratified checkpoints with instant concept remediation loops, maximizing knowledge retention over test-center stamina.

Stack

LayerToolRole
FrameworkAstroStatic site generation and content routing
LanguageTypeScriptStrict type checking across schema and client state
IslandsReactInteractive flashcard feed, mock exam engine, scorecard generator, and progress readouts
3D GraphicsThree.jsWebGL 3D Question Bank mind map and camera lerp physics
Agent APIModel Context Protocol (MCP)LLM tool schema declaration for Claude Desktop, Cursor, and agent runners
MonetizationBazantic GatewayReverse proxy, metering, and x402-mpp USDC micropayments on Base
ValidationZodContent schema gate enforcing citation resolution at build time
StorageDexie (IndexedDB)Client-side spaced repetition scheduling and test records
TestingVitest468 unit and integration tests across 46 test suites
HostingCloudflare PagesDirect upload static hosting on global edge CDN

Development timeline

15 logged updates over 23 days, 12 Aug 2026 to 3 Sept 2026.

  1. Phase 4 bank scaling (2,050 cards), stratified mock exams, and adaptive learning loopsfeature

    The bank scaled from 226 questions (303 of 345 reachable matrix cells) to 2,005 questions + 45 concept cards (2,050 total cards) across 9 certification tracks. Matrix coverage reached 100% (765/765 cells filled) with zero empty cells and…

  2. fix round 6, the slide that could not growfix

    Owner used the deployed site on a phone and reported that the scroll motion after answering was not working well, and asked for a button to advance.

  3. /progress rebuilt as an instrumentimproved

    Owner asked for /progress before manual testing. It was the least designed surface in the app and the one the owner had named as mattering.

  4. scope, and the cert axis that charged for compoundingfeature

    Owner question after the fill: what stops the questions already written from filling the missing cells? The answer was that nothing about the questions did.

  5. Phase 3, the citation spine and the matrix fillfeature

    Owner verdict on 2026-08-22: the site is not usable. The diagnosis was that almost none of it was a product defect.

  6. CI had never passed, and the reason was one test fixturefix

    CertScroll CI was red on all 6 runs since it was created. Not intermittently: it had never once been green.

  7. CertScroll gets its own brandfeature

    The direction is instrument, not document. The app measures something real about the reader and showed none of it on the front door.

  8. light modefeature

    A second palette, not an inversion. The amber signal sits at 80% lightness because that is what reads on a near-black ground.

Show the earlier 7 entries
  1. scenario arcsfeature

    The first scenario is live. loan-model follows an inherited loan-approval model across six steps: pre-training bias metrics, target leakage in a derived feature, an overfitting gap, a canary release, drift with no code change, and a…

  2. the answer key stops being option A, and Phase 2 machinery landsfeature

    A live defect the whole gate missed. All 15 authored questions carried answer: 0, so a visitor scored 100% by tapping the top option without reading.

  3. the progress pagefeature

    No new stored state. Every answer already recorded cardId, result, the option chosen and a timestamp in device-local IndexedDB, so /progress is a read-only view over data that already existed.

  4. Astro scaffold, actual toolchain vs. plan's assumptionfeature

    The phase1a plan names "Astro 6 (static output)" as the tech stack. Running npm create astro@latest .

  5. content schemas (scripts/schema.ts), two deliberate departures from spec section 7docs

    Cert gains url, note, access, booking, warning. Phase 0 gathered all five against provider pages on 2026-08-12 and they are exactly what makes a cert page useful with zero cards.

  6. Task 5 fix round 1, two owner rulings and two corrected stale claimsfix

    Owner ruling 1 (Oracle domains): ship Task 5's five Oracle domains as-is, mark them domainsUnverified: true rather than delete or re-invent them, and make verifying them against Oracle's published 1Z0-1127-25 exam topics a hard gate on…

  7. Task 5, cert data and resources. Per-cert domain provenancefeature

    domains did not exist in Phase 0 and was authored fresh for Task 5. This table records where each cert's domains came from.

Written from this project's decision log as work happened, not afterwards. 2 entries were withheld from publication. See every project →

What's next

1 open item

Plans, not promises. Taken from this project's own roadmap.