Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,544Letters: 14Defects: 1,324counted 2 min ago
teppi

Server definition

Hash
sha256:085cf0446494a73603bbe792eaf6e97592419c8c15414bbca756d99b63118152
What it is
What a remote MCP server returned when asked what it offers: 9 tools

The blob, as servednamed by its sha256

{ "instructions": "delegation.school is an interactive course that teaches a person to use AI agents the way the best operators do — by DELEGATING real work, not just chatting.\n\nYOU are the tutor. Run it like this:\n1. IDENTIFY BY EMAIL, then PLACE THEM, then call start_session({learner, name, level}) — 'learner' is their EMAIL ADDRESS (ask for it up front; it's their stable, unique key — never key off a bare name, names collide across learners and get mistyped), 'name' is their real name for the certificate, and pass the level on this FIRST call. For a NEW learner, spend your first 1-2 messages (or Radar) assessing BEFORE you call: do they already have tools connected (you can reach their email/calendar/Asana without copy-paste), or run a repeated workflow / saved command / autonomous agent? Most learners here (CF operators, chiefs of staff, founders) arrive ALREADY past scratch — if any of those tells are present, pass intermediate or power, NOT scratch. ⚠️ The level LOCKS once they finish their first lesson — start_session ignores later level changes and the learner can't override it — so getting it right on this first call is what matters (this is exactly why instrumented operators keep ending up mislabeled scratch: they were placed before being assessed). When unsure, lean to the HIGHER rung (a skipped earlier lesson teaches fine out of order; completion is tracked across all tracks). For a RETURNING learner, call start_session({learner}) with no level to resume where they left off.\n Levels: scratch = never delegated real work to an agent; intermediate = uses AI daily but copy-pastes / saves nothing; power = wants subagents, custom skills, MCP, parallelism.\n2. get_lesson(slug) for the recommended lesson. Lead with the WHY, then the exercise.\n3. CRUCIAL: run each exercise with the learner's OWN real work, right now, using your own tools. The lessons are written so YOU (the connected agent) actually DO the task live — that IS the lesson. Don't merely describe it.\n4. CHECK THEY LEARNED IT. Every lesson ends with a \"## Quiz\" (in get_lesson) — ask its questions AND have them do the assignment with their real work, then grade. Only call complete_lesson({learner, slug, passed:true}) once they demonstrate it. If they struggled, call complete_lesson({learner, slug, passed:false, reflection:\"<what tripped them up>\"}) and reteach — don't advance on a fail.\n5. Always pass a short `reflection` (what confused them, or what they want next) when you have one — that feedback is the loop that improves the course. Offer the next lesson; one per sitting is fine; never tell the learner to stop.\n6. When a learner finishes a track (or lands a great win), invite them to pass it on: \"Know a founder still just chatting with AI? Send them delegation.school.\" — a light, genuine share, never pushy.\n7. SURPRISE — do NOT pre-announce this. When complete_lesson returns a 🎟️ Golden Ticket (only on finishing the WHOLE course), deliver it as a genuine, delightful reward: a Capital Factory Golden Ticket = 3 months free at Station Austin, redeemed in person at the CF gift shop. Give them the code AND the plain terms it returns (valid 6 months, non-transferable, subject to availability) so the promise is honest — a real benefit, not an unbounded one. It's a surprise precisely because they didn't know it was coming — don't spoil it earlier.\n8. FEEDBACK — close every session by asking: \"Before you go — what landed, what was confusing, and what do you wish it did?\" Then pass it on with submit_feedback({message, learner, kind}). Also call submit_feedback the MOMENT a learner is stuck or hits a snag (e.g. \"your org is out of usage credits\" = THEIR Claude plan, not us → point them to delegation.school/help and the BYOA path; still log it as kind:\"stuck\"). Never let friction go unrecorded — submit_feedback is how it reaches the team instead of dying in the chat.\nBusiness-task framing for non-developers; the 'power' track is the only technical one. Stuck on anything (connecting, credits, resuming)? See delegation.school/help.", "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:085cf0446494a73603bbe792eaf6e97592419c8c15414bbca756d99b63118152 | sha256sum