The Trade School.
Machine layer

The API contract.

Three paid endpoints, one profile shape, one disclosure on every response. HTTP 402 → sign → retry. No human approval, no OAuth, no API keys.

Free vs. paid

PathPriceWhat you get
GET /v1, /v1/stats, /llms.txt, /.well-known/*, /signal/pathways.json, all pagesfreeDiscovery: schema, live prices, aggregates, framework catalog
POST /signal/employer-demandfreeEmployers submit demand signals (unverified on arrival)
POST /score/competence$0.24Competence measure 0–4, grade, tier, six-metric breakdown, reasons, verification gate
GET|POST /match/training-path$0.24Ranked pathways: readiness, demand fit, uplift, missing prerequisites, competencies gained
GET|POST /match/employer-demand$0.24Ranked employer signals: fit, gaps, horizon, status
GET /signal/demand.json$0.24 (AI crawlers) · free (people, search engines)The live demand catalog

Priced on the portfolio ladder for a differentiated scored product. Live values are always in /v1 and /.well-known/x402.json; the numbers on this page are the defaults at publish time.

The 402 flow

1. POST /score/competence  (no payment header)
   ← 402 Payment Required  { x402Version, accepts: [{ scheme: "exact", network: "base", asset: USDC, maxAmountRequired, payTo, resource }] }
2. Sign the payment for the amount in accepts[0] (any x402 client; USDC on Base)
3. Retry with header  X-PAYMENT: <base64 payment payload>
   ← 200 OK  + X-PAYMENT-RESPONSE (settlement receipt)  + JSON body below

Profile shape (all paid endpoints)

{
  "competencies": [
    { "domain": "electrical", "skill": "conduit bending", "level": 3,
      "evidence_type": "task", "recency_days": 30, "verification_tier": 2 },
    { "domain": "safety", "level": 3, "evidence_type": "assessment", "recency_days": 40, "verification_tier": 2 }
  ],
  "demand_context": { "sector": "energy", "region": "US-NJ", "roles": ["solar installer"] }
}
  • level 0–5: none · aware · assisted · independent · proficient · expert
  • evidence_type: employer_attestation (1.00) · assessment (0.90) · task (0.85) · simulation (0.75) · portfolio (0.65) · self_report (0.35) — the number is the evidence strength applied to the level
  • verification_tier: 0 none · 1 partner-attested · 2 employer/assessor-attested
  • demand_context.region: ISO country or country-region only (US, US-NJ) — never finer
  • Fields that describe a person (name, contact, age, gender, race, address, photo …) are stripped, reported in stripped_fields, and never scored or logged

Response — POST /score/competence

{
  "ok": true, "model_version": "tsc-v0.1.0",
  "competence_score": 3.35, "grade": "A-", "tier": "Ready",
  "confidence_score": 0.88, "verification_completeness": 1,
  "breakdown": { "demonstrated_depth": { "value": 76, "weight": 0.2, "weighted_contribution": 0.608 }, "verification": {...}, "demand_alignment": {...}, "breadth": {...}, "recency": {...}, "trajectory": {...} },
  "verification_gate": { "tier2_evidence_count": 3, "minimum_required": 3, "employer_grade": true },
  "routing_eligible": true, "explainability": "full",
  "reasons": [ { "code": "BRD-NARROW", "text": "Evidence covers fewer than two competency domains at an assisted level or above." } ],
  "domains": ["electrical", "safety"], "matched_demand_signals": 2, "stripped_fields": [],
  "calibration_status": "hypothesis — not yet calibrated against hiring or income outcomes",
  "disclosure": "Analytical competence measure, model tsc-v0.1.0 … NOT an employment decision …"
}

The six metrics

MetricWeightMeaning
demonstrated_depth0.20How far the strongest evidence goes (level × evidence strength), top three domains
verification0.20Share of evidence a second party stood behind
demand_alignment0.20Overlap with the demand context supplied (sector / roles) against the live catalog
breadth0.15Distinct domains with evidence at assisted level or above
recency0.15Half-life decay (365 days) on the strongest evidence per domain
trajectory0.10Recent evidence stronger than older evidence

GET form

Both /match/* endpoints accept GET ?profile=<base64url JSON> for clients that prefer idempotent reads. The 402 challenge and price are identical.

Headers on every scored response

X-Measure-Version: tsc-v0.1.0
X-Measure-Disclosure: analytical; not-an-employment-decision; not-a-consumer-report

What every paid call tells us

Each settled query is logged as a shape — which domains, which levels, which evidence types, which sector — never who it described. That log is the demand-validated roadmap; the public aggregates are at /v1/stats.

Contact for integration questions: login@weckett.com · Licensing: rsl.xml