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

Server definition

Hash
sha256:80bd9daaae5c95a3076c9154e1eacd18c2041ae6e283ebb360356abbf5f3e774
What it is
What a remote MCP server returned when asked what it offers: 7 tools

The blob, as servednamed by its sha256

{ "instructions": "Moltline's Educator Toolkit: 8 teaching persona/skill products (curriculum design, classroom management, virtual teaching, accommodations implementation, exam prep, study groups, language learning, parent coaching). Free: list_products, get_free_skill, readability_report. Premium: get_full_product, get_full_skill.", "tools": [ { "description": "Load a product's free gateway skill with its complete instructions. FREE.\n\nTypical input {\"slug\": \"curriculum-architect-hs\"} returns {\"slug\": ...,\n\"skill\": \"<skill name>\", \"instructions\": \"<full skill text>\"}.\n\nReturns exactly one skill - the product's free gateway skill - chosen\nautomatically from the slug, with no plan required. Use when the caller\nwants usable instructions immediately. Not for the product's other skills:\nthose are named and need get_full_skill with a skill_name, which requires\na paid plan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'. Use list_products.\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "slug": { "description": "Product slug exactly as returned by list_products, e.g. \"curriculum-architect-hs\"; must be non-empty.", "minLength": 1, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_free_skill", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Load one product in full: its persona plus every paid skill. PREMIUM (license).\n\nTypical input {\"slug\": \"curriculum-architect-hs\"} returns {\"slug\": ...,\n\"name\": ..., \"persona\": \"<persona text>\", \"skills\": [{\"name\": ...,\n\"instructions\": ...}, ...], \"free_skill\": {...}}.\n\nReturns persona plus every skill for one product. Use when the caller\nwants the whole product. Not for a single skill (get_full_skill) and not\nfor a free look, which list_products and get_free_skill provide with no\nplan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "slug": { "description": "Product slug exactly as returned by list_products, e.g. \"curriculum-architect-hs\"; must be non-empty.", "minLength": 1, "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_full_product", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Load one paid skill's complete instructions from a product. PREMIUM (license).\n\nTypical input {\"slug\": \"curriculum-architect-hs\", \"skill_name\":\n\"unit-planner\"} returns {\"slug\": ..., \"skill\": ..., \"instructions\":\n\"<full skill text>\"}.\n\nReturns one named skill, selected by skill_name. Use when the caller wants\none specific paid skill. Not for the free gateway skill, which\nget_free_skill returns with no plan, and not for every skill at once\n(get_full_product). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "skill_name": { "description": "Exact skill name as listed in that product's \"skills\" array from list_products, e.g. \"unit-planner\"; must be non-empty.", "minLength": 1, "type": "string" }, "slug": { "description": "Product slug exactly as returned by list_products, e.g. \"curriculum-architect-hs\"; must be non-empty.", "minLength": 1, "type": "string" } }, "required": [ "slug", "skill_name" ], "type": "object" }, "name": "get_full_skill", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Summarize how an assessment landed: stats, bands, and outliers. FREE.\n\nReports mean, median, std dev, quartiles, distribution by percentage\nband, and flagged low outliers. Typical input {\"scores\": [88, 92, 75,\n61, 84], \"max_score\": 100} returns {\"n\": 5, \"mean\": 80.0, \"median\":\n84.0, \"std_dev\": ..., \"q1\": ..., \"q3\": ..., \"distribution\":\n{\"90-100%\": 1, ...}, \"outliers_low\": [...], \"reading\": \"...\"}.\n\nUse on a list of scores already earned. Not for the readability of the\nassessment itself (readability_report). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"no scores\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "max_score": { "default": 100, "description": "Maximum possible score; must be greater than 0. Default 100.", "exclusiveMinimum": 0, "type": "number" }, "scores": { "description": "Raw scores, one per student; at least 1 value, e.g. [88, 92, 75].", "items": { "type": "number" }, "minItems": 1, "type": "array" } }, "required": [ "scores" ], "type": "object" }, "name": "grade_curve", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Split a class period into timed segments with sensible weighting. FREE.\n\nThe opener and closer get less time; core activities get more.\nTypical input {\"minutes\": 50, \"segments\": [\"Warm-up\", \"Direct instruction\",\n\"Practice\", \"Exit ticket\"]} returns {\"period_minutes\": 50, \"plan\":\n[{\"segment\": \"Warm-up\", \"start_min\": 0, \"duration_min\": 8}, ...],\n\"note\": \"...\"}.\n\nUse when one fixed class period must be divided into segments. Not for\nmulti-day planning and not for spaced review, which the personal server's\nspaced_repetition_plan builds. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"need segments and at least 5 minutes\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "minutes": { "description": "Length of the class period in minutes; at least 5, e.g. 50.", "minimum": 5, "type": "integer" }, "segments": { "description": "Ordered segment names, e.g. [\"Warm-up\", \"Practice\", \"Exit ticket\"]; at least 1 entry.", "items": { "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "minutes", "segments" ], "type": "object" }, "name": "lesson_timer", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "List the 8 educator products with their included skills. FREE.\n\nTakes no arguments. Typical input {} returns a list of 8 product objects, each {\"slug\":\n\"curriculum-architect-hs\", \"name\": ..., \"tagline\": ..., \"skills\": [\"Skill A\",\n...], \"free_skill\": \"Gateway Skill Name\"}. Use the returned slug values\nwith get_free_skill, get_full_product, or get_full_skill.\n\nReturns metadata only - no persona text and no skill instructions. Use\nwhen the caller wants to see what this server covers. Not for keyword\nsearch across the whole 138-product catalog, which the catalog server's\nsearch_catalog does, and not for instructions the caller can act on\n(get_free_skill). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_products", "outputSchema": { "properties": { "result": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "result" ], "type": "object", "x-fastmcp-wrap-result": true } }, { "description": "Analyze teaching text with Flesch-Kincaid readability and leveling advice. FREE.\n\nTypical input {\"text\": \"<passage>\", \"target_grade\": 6} returns\n{\"flesch_kincaid_grade\": 8.2, \"reading_ease\": 62.1, \"sentences\": N,\n\"words\": N, \"avg_words_per_sentence\": N, \"long_sentences_over_25w\": N,\n\"polysyllabic_words_sample\": [...], \"target_grade\": 6, \"gap\": 2.2,\n\"suggestions\": [\"...\"]}.\n\nUse on teaching text where the reading level matters. Not for scores\nstudents earned (grade_curve) and not for general prose style, which the\ncreator server's analyze_writing covers. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"empty text\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.", "inputSchema": { "additionalProperties": false, "properties": { "target_grade": { "default": 0, "description": "Target grade level 1-12; when set, the report adds a gap assessment against it. 0 (default) skips it.", "type": "integer" }, "text": { "description": "The passage to analyze — at least one full sentence of plain text; must be non-empty.", "minLength": 1, "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "readability_report", "outputSchema": { "additionalProperties": true, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:80bd9daaae5c95a3076c9154e1eacd18c2041ae6e283ebb360356abbf5f3e774 | sha256sum