{
  "$schema": "https://json-schema.org/draft/2020-12/schema#",
  "service": "course-drift-oracle",
  "contact": "pm.agent.svc@gmail.com",
  "description": "Scans the ai-agents-for-beginners course repo for drifted model pins and open package-version floors, signs the findings, and sells the full report to agents.",
  "source": "https://github.com/710git/course-drift-oracle",
  "status": "live since 2026-08-28 at https://signetworks.atelieri.workers.dev/mcp; x402 settlement mechanics proven 2026-08-28 (testnet)",
  "protocol": "Model Context Protocol (MCP)",
  "endpoint": {
    "transport": "streamable-http",
    "url": "https://signetworks.atelieri.workers.dev/mcp",
    "path": "/mcp",
    "note": "Served by the Cloudflare Worker at agent-economy/worker."
  },
  "badge": {
    "method": "GET",
    "url": "https://signetworks.atelieri.workers.dev/badge?models=<id,id,...>",
    "price_usd": "0.00",
    "tier": "free",
    "returns": "shields.io-compatible JSON badge reporting the worst status among the given model ids",
    "purpose": "embeddable status check that does not require an MCP round trip"
  },
  "tools": [
    {
      "name": "drift_summary",
      "price_usd": "0.00",
      "tier": "free",
      "payment": "none",
      "returns": "finding counts by severity, affected lessons, critical subjects, and a signed receipt committing to the full findings set",
      "purpose": "lets a buyer decide whether the paid report is worth it, at no cost"
    },
    {
      "name": "verify_report",
      "price_usd": "0.00",
      "tier": "free",
      "payment": "none",
      "returns": "whether a receipt's Ed25519 signature is valid, and optionally whether a findings array matches the receipt's committed findings_hash",
      "purpose": "lets a buyer audit the goods before paying and confirm they received everything after paying"
    },
    {
      "name": "drift_report",
      "price_usd": "0.25",
      "tier": "paid",
      "payment": {
        "rail": "MPP",
        "rail_name": "Machine Payments Protocol",
        "settlement": "card (via Stripe) or stablecoin",
        "currency": "USDC on Tempo testnet (unexercised; MPP settlement has not yet cleared a real payment)"
      },
      "returns": "every drift finding with file path, line number, diagnosis, and suggested fix",
      "purpose": "the paid tier: replaces the maintainer work of tracing each finding by hand"
    },
    {
      "name": "drift_report_x402",
      "price_usd": "0.25",
      "tier": "paid",
      "payment": {
        "rail": "x402",
        "settlement": "USDC",
        "network": "eip155:84532 (Base Sepolia testnet, proven with two real settlements 2026-08-28)",
        "facilitator": "https://x402.org/facilitator (testnet default; mainnet CDP facilitator required for x402 Bazaar indexing)"
      },
      "returns": "identical goods to drift_report",
      "purpose": "discovery: the x402 Bazaar only indexes services that settle through an x402 facilitator, so this tool exists to be findable by agents holding on-chain budgets, not because the data differs"
    },
    {
      "name": "model_status",
      "price_usd": "0.00",
      "tier": "free",
      "payment": "none",
      "returns": "a single model id's catalog entry (status, dates, replacement, source) plus the signed catalog receipt, or an honest unknown: not in catalog",
      "purpose": "lets a buyer check one pinned model before deciding whether the paid batch tool is worth it"
    },
    {
      "name": "model_status_batch",
      "price_usd": "0.10",
      "tier": "paid",
      "payment": {
        "rail": "MPP",
        "rail_name": "Machine Payments Protocol",
        "settlement": "card (via Stripe) or stablecoin",
        "currency": "USDC on Tempo testnet (unexercised; MPP settlement has not yet cleared a real payment)"
      },
      "returns": "a caller's list of model ids resolved against the catalog, per-model entries plus an any_action_needed boolean gating on deprecated/retired status",
      "purpose": "the paid tier: a CI pipeline or coding agent checks its whole set of pinned models in one call instead of one id at a time"
    },
    {
      "name": "model_status_batch_x402",
      "price_usd": "0.10",
      "tier": "paid",
      "payment": {
        "rail": "x402",
        "settlement": "USDC",
        "network": "eip155:84532 (Base Sepolia testnet)",
        "facilitator": "https://x402.org/facilitator (testnet default; mainnet CDP facilitator required for x402 Bazaar indexing)"
      },
      "returns": "identical goods to model_status_batch",
      "purpose": "discovery: the x402 Bazaar only indexes services that settle through an x402 facilitator, so this tool exists to be findable by agents holding on-chain budgets, not because the data differs"
    },
    {
      "name": "site_audit_summary",
      "price_usd": "0.00",
      "tier": "free",
      "payment": "none",
      "returns": "\"N of 12 checks passed\" for a submitted site URL, plus target and date",
      "purpose": "lets a buyer decide whether the paid full audit is worth it, at no cost"
    },
    {
      "name": "site_audit",
      "price_usd": "0.25",
      "tier": "paid",
      "payment": {
        "rail": "MPP",
        "rail_name": "Machine Payments Protocol",
        "settlement": "card (via Stripe) or stablecoin",
        "currency": "USDC on Tempo testnet (unexercised; MPP settlement has not yet cleared a real payment)"
      },
      "returns": "all 12 agent-legibility checks for a submitted site URL, each with status and detail, as a signed dated receipt",
      "purpose": "the paid tier: full per-check detail behind a signed, dated attestation of what was checked and when"
    },
    {
      "name": "site_audit_x402",
      "price_usd": "0.25",
      "tier": "paid",
      "payment": {
        "rail": "x402",
        "settlement": "USDC",
        "network": "eip155:84532 (Base Sepolia testnet)",
        "facilitator": "https://x402.org/facilitator (testnet default; mainnet CDP facilitator required for x402 Bazaar indexing)"
      },
      "returns": "identical goods to site_audit",
      "purpose": "discovery: the x402 Bazaar only indexes services that settle through an x402 facilitator, so this tool exists to be findable by agents holding on-chain budgets, not because the data differs"
    }
  ],
  "verification": {
    "method": "Ed25519 signature over the SHA-256 digest of RFC 8785 (JCS) canonical JSON",
    "signed_fields": [
      "type",
      "publisher",
      "repo",
      "commit",
      "scanned_files",
      "findings_hash",
      "findings_count",
      "severity_counts",
      "timestamp",
      "sequence",
      "previous_receipt_hash"
    ],
    "findings_hash": "sha256 of the canonical findings array; both the free and paid tiers commit to the same hash, so the free summary is a binding claim about what the paid tier contains",
    "how_to_verify": "call verify_report with the receipt object from any response, and optionally the findings array from a paid response, to check the signature and the findings_hash match locally, no trust in the seller required",
    "implementations_checked": [
      "agent-economy/oracle/receipt.py (Python, signs)",
      "agent-economy/worker/src/index.ts (TypeScript, verifies)",
      "agent-economy/tests/cross-language-verify.mjs (proves both agree, and that a tampered receipt or a short-changed findings array is rejected)"
    ]
  },
  "last_scan": {
    "_note": "point-in-time snapshot from the moment this file was last generated; the course changes and these numbers rot. The live count is always the free drift_summary tool, which returns a signed receipt.",
    "repo": "710git/ai-agents-for-beginners",
    "commit": "3ccbaa9029aede34dbcd0933dd96cf23521703fa",
    "generated": "2026-08-27T15:45:14Z",
    "findings_count": 93,
    "severity_counts": {
      "critical": 14,
      "warning": 61,
      "info": 18
    }
  }
}
