Learn to delegate real work to AI, not just chat with it — a course taught live in your own Claude.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The lesson slug just attempted.
Same EMAIL address used in start_session.
Did they pass the quiz/assignment? Default true. false = reteach, don't advance.
What confused them, what landed, or what they want next (≤1000 chars). Feeds curriculum improvement.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The lesson slug just attempted. |
| passed | boolean | Did they pass the quiz/assignment? Default true. false = reteach, don't advance. |
| learner* | string | Same EMAIL address used in start_session. |
| reflection | string | What confused them, what landed, or what they want next (≤1000 chars). Feeds curriculum improvement. |
{
"type": "object",
"required": [
"learner",
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The lesson slug just attempted."
},
"passed": {
"type": "boolean",
"description": "Did they pass the quiz/assignment? Default true. false = reteach, don't advance."
},
"learner": {
"type": "string",
"description": "Same EMAIL address used in start_session."
},
"reflection": {
"type": "string",
"description": "What confused them, what landed, or what they want next (≤1000 chars). Feeds curriculum improvement."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| admin_key* | string | Operator admin key (Worker secret ADMIN_KEY). |
{
"type": "object",
"required": [
"admin_key"
],
"properties": {
"admin_key": {
"type": "string",
"description": "Operator admin key (Worker secret ADMIN_KEY)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Lesson slug from list_lessons / start_session. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Lesson slug from list_lessons / start_session."
}
},
"additionalProperties": false
}List lessons (slug, title, track, order, summary), optionally filtered to one track.
| Argument | Type | Description |
|---|---|---|
| track | string | Optional track filter. |
{
"type": "object",
"properties": {
"track": {
"enum": [
"scratch",
"intermediate",
"power"
],
"type": "string",
"description": "Optional track filter."
}
},
"additionalProperties": false
}What delegation.school is, the three tracks, and how to run the course as the learner's tutor. Background reading.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| level* | string | The new level: scratch | intermediate | power. |
| learner* | string | The learner's name/email (same key used in start_session). |
| admin_key* | string | Operator admin key (Worker secret ADMIN_KEY). |
{
"type": "object",
"required": [
"learner",
"level",
"admin_key"
],
"properties": {
"level": {
"enum": [
"scratch",
"intermediate",
"power"
],
"type": "string",
"description": "The new level: scratch | intermediate | power."
},
"learner": {
"type": "string",
"description": "The learner's name/email (same key used in start_session)."
},
"admin_key": {
"type": "string",
"description": "Operator admin key (Worker secret ADMIN_KEY)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| name | string | Optional: the learner's display name, for the certificate and a friendlier greeting. The email stays the key. |
| level | string | Optional: set/override their level (scratch | intermediate | power). |
| learner* | string | 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": "object",
"required": [
"learner"
],
"properties": {
"name": {
"type": "string",
"description": "Optional: the learner's display name, for the certificate and a friendlier greeting. The email stays the key."
},
"level": {
"enum": [
"scratch",
"intermediate",
"power"
],
"type": "string",
"description": "Optional: set/override their level (scratch | intermediate | power)."
},
"learner": {
"type": "string",
"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)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| kind | string | Optional category. |
| lesson | string | Optional: the lesson slug it's about. |
| learner | string | Optional: the learner's name/email so the team can follow up. |
| message* | string | The learner's feedback, in their own words (≤2000 chars). |
{
"type": "object",
"required": [
"message"
],
"properties": {
"kind": {
"enum": [
"stuck",
"bug",
"idea",
"praise",
"other"
],
"type": "string",
"description": "Optional category."
},
"lesson": {
"type": "string",
"description": "Optional: the lesson slug it's about."
},
"learner": {
"type": "string",
"description": "Optional: the learner's name/email so the team can follow up."
},
"message": {
"type": "string",
"description": "The learner's feedback, in their own words (≤2000 chars)."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| code* | string | The reward code, e.g. GT-AB12CD34 (Station ticket) or FG-AB12CD34 (Founding badge). |
| redeem | boolean | If true, mark the ticket redeemed now (one-way). |
| admin_key* | string | Operator admin key (Worker secret ADMIN_KEY). |
{
"type": "object",
"required": [
"code",
"admin_key"
],
"properties": {
"code": {
"type": "string",
"description": "The reward code, e.g. GT-AB12CD34 (Station ticket) or FG-AB12CD34 (Founding badge)."
},
"redeem": {
"type": "boolean",
"description": "If true, mark the ticket redeemed now (one-way)."
},
"admin_key": {
"type": "string",
"description": "Operator admin key (Worker secret ADMIN_KEY)."
}
},
"additionalProperties": false
}