addrbookFor publishers
← The evidence ledger

Evidence row 307468

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 6ecd536b-808d-4d2f-8dd8-9e483e076db8
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
d89e99c859cd2032c581489dbdf30abaa1211545678b6b0c02f5c69cb7f6eb6e
Leaf
0x493152adcbdd0e3d87d68593e426cc32ed718fbbe52823dee9e04645e22e20ac

What was observed

{
  "count": 9,
  "tools": [
    {
      "description": "Record a lesson result for a learner AFTER grading its quiz/assignment. passed:true marks it done and advances; passed:false records the attempt without advancing (reteach). Always include a `reflection` when you have one — it's the signal that improves the course.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "learner": {
            "description": "Same EMAIL address used in start_session.",
            "type": "string"
          },
          "passed": {
            "description": "Did they pass the quiz/assignment? Default true. false = reteach, don't advance.",
            "type": "boolean"
          },
          "reflection": {
            "description": "What confused them, what landed, or what they want next (≤1000 chars). Feeds curriculum improvement.",
            "type": "string"
          },
          "slug": {
            "description": "The lesson slug just attempted.",
            "type": "string"
          }
        },
        "required": [
          "learner",
          "slug"
        ],
        "type": "object"
      },
      "name": "complete_lesson"
    },
    {
      "description": "OPERATOR / Inspectable State: usage snapshot of the whole course — learner count, level mix, completions, per-lesson pass rates, and recent reflections. Requires admin_key. Answers 'what is the state of the work?' for an operator agent.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "admin_key": {
            "description": "Operator admin key (Worker secret ADMIN_KEY).",
            "type": "string"
          }
        },
        "required": [
          "admin_key"
        ],
        "type": "object"
      },
      "name": "course_stats"
    },
    {
      "description": "Get the full markdown of one lesson by slug. Teach from it: lead with the why, then run the exercise with the learner's real work.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "description": "Lesson slug from list_lessons / start_session.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_lesson"
    },
    {
      "description": "List lessons (slug, title, track, order, summary), optionally filtered to one track.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "track": {
            "description": "Optional track filter.",
            "enum": [
              "scratch",
              "intermediate",
              "power"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_lessons"
    },
    {
      "description": "What delegation.school is, the three tracks, and how to run the course as the learner's tutor. Background reading.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "overview"
    },
    {
      "description": "OPERATOR: reclassify an existing learner's track (scratch | intermediate | power). Routes through the learner's record so the change sticks. Use when a learner was placed wrong — e.g. a scratch enrollee who's really a power operator. Requires admin_key. The learner must have started a session first.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "admin_key": {
            "description": "Operator admin key (Worker secret ADMIN_KEY).",
            "type": "string"
          },
          "learner": {
            "description": "The learner's name/email (same key used in start_session).",
            "type": "string"
          },
          "level": {
            "description": "The new level: scratch | intermediate | power.",
            "enum": [
              "scratch",
              "intermediate",
              "power"
            ],
            "type": "string"
          }
        },
        "required": [
          "learner",
          "level",
          "admin_key"
        ],
        "type": "object"
      },
      "name": "set_level"
    },
    {
      "description": "Call FIRST. Place or resume a learner: returns their level, completed lessons, and the recommended next lesson. Ask for the learner's EMAIL ADDRESS and pass it as `learner` — emails are stable and unique; a bare name collides across learners and gets mistyped. Pass their real name as `name` for the certificate.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "learner": {
            "description": "The learner's EMAIL ADDRESS — their stable, unique progress key. Ask for it; do not key off a bare name (names collide across learners and get mistyped).",
            "type": "string"
          },
          "level": {
            "description": "Optional: set/override their level (scratch | intermediate | power).",
            "enum": [
              "scratch",
              "intermediate",
              "power"
            ],
            "type": "string"
          },
          "name": {
            "description": "Optional: the learner's display name, for the certificate and a friendlier greeting. The email stays the key.",
            "type": "string"
          }
        },
        "required": [
          "learner"
        ],
        "type": "object"
      },
      "name": "start_session"
    },
    {
      "description": "Send the course team feedback FOR the learner — what's confusing, a bug, an idea, or praise. No grade, no admin key. Use it the moment a learner is stuck or reacts to something, AND always offer it when a session wraps ('anything confusing, or that you wish it did?'). Routes to the team's Slack + the feedback log so friction becomes a signal instead of a 1:1 text.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "description": "Optional category.",
            "enum": [
              "stuck",
              "bug",
              "idea",
              "praise",
              "other"
            ],
            "type": "string"
          },
          "learner": {
            "description": "Optional: the learner's name/email so the team can follow up.",
            "type": "string"
          },
          "lesson": {
            "description": "Optional: the lesson slug it's about.",
            "type": "string"
          },
          "message": {
            "description": "The learner's feedback, in their own words (≤2000 chars).",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "name": "submit_feedback"
    },
    {
      "description": "OPERATOR (Capital Factory gift shop): validate a reward code (Golden Ticket GT- or Founding Graduate badge FG-) — returns who earned it, the reward, when, and whether it's been redeemed. Pass redeem:true to mark it redeemed at point of redemption. Requires admin_key.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "admin_key": {
            "description": "Operator admin key (Worker secret ADMIN_KEY).",
            "type": "string"
          },
          "code": {
            "description": "The reward code, e.g. GT-AB12CD34 (Station ticket) or FG-AB12CD34 (Founding badge).",
            "type": "string"
          },
          "redeem": {
            "description": "If true, mark the ticket redeemed now (one-way).",
            "type": "boolean"
          }
        },
        "required": [
          "code",
          "admin_key"
        ],
        "type": "object"
      },
      "name": "verify_ticket"
    }
  ]
}

What the leaf hashes

{"body":"d89e99c859cd2032c581489dbdf30abaa1211545678b6b0c02f5c69cb7f6eb6e","id":307468,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793057684990513,"prev":null,"subject":"6ecd536b-808d-4d2f-8dd8-9e483e076db8","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (296695 rows).

  1. 0x49315459b4e97b4b3cedae3cf029538b580d803abbd97a0901c86671a1fcd788
  2. 0x56fbfebae600243c6722a3dbbfefd7e9aeb6dd9d0e9929880b2c32d25a2df47a
  3. 0xdd4dc2a2b93b8d2a13a9f4ec008b2271e95a324250daacff2d983e2e364351a6
  4. 0x39076e1513033a64ecc241f437e40e0941d270bb13ec9034c82b35064b8b595a
  5. 0x23472ed69eae975fa85f391f22512924d5090db824de70411f6677d0e9bc9c45
  6. 0x8d22ff6f1457b29f50c3b984cb4cddf078feda1288b6f3ed4233e5f67b85fe0b
  7. 0x5db15b0f640db361ce4e7fd848035fdd06ce7a9723f2076ec1d421c089e7802c
  8. 0xc7030292d06775814630ce84a84f8aace027d708bd27b383e364a8af1e25fd7f
  9. 0x7541cd1918e38f4a0f6add627a7846433315f4898be3452c4fe4e6121a5b9747
  10. 0x1c31b9fd609755e3d960fab27bd2b1eb3a2104f15e3f9261a56d30e3613f4c01
  11. 0xa40c09a143bc388ccac821ec3854902941c513470a57a806c98060a6d63aedf9
  12. 0xee7d5711cd2515f4b08f3e4041d3d56304f9db6bffd82d82746f0f4ea43b8f26
  13. 0xb86fa861d04737cb507e721eefbb066d26528fdb6017b1145c18d1223b93ee21
  14. 0x88e326a39b26e2c125306c9d3805d14398ace088bba9a2a0aa376b811cfb201a
  15. 0x2be1e80e065dd6b2cc75a7142be22225acd144ac975d70bf24b4f01fd76dc497
  16. 0x2e6a32eb32761c210560e852405e2f865f958ddbe01027894f8b9c1b3433b9f0
  17. 0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON