{"name":"moltline-educator","description":"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:...","url":"https://mcp.moltlinestudio.com/educator","transport":"streamable-http","homepage":"https://moltlinestudio.com/servers.html","serverInfo":{"name":"moltline-educator","version":"1.1.0"},"toolCounts":{"total":7,"free":5,"premium":2},"protocolVersion":"2025-11-25","protocolVersions":["2024-11-05","2025-03-26","2025-06-18","2025-11-25"],"pricing":{"freeTier":{"tools":5,"price":"0","currency":"USD","description":"Free forever. No account, no registration and no credentials are required to call them."},"details":"https://moltlinestudio.com/.well-known/pricing","terms":"https://moltlinestudio.com/terms.html","agentPayment":{"protocol":"x402","resource":"https://moltlinestudio.com/api","network":"eip155:8453","asset":"USDC","amount":"19000000","discovery":"https://moltlinestudio.com/.well-known/x402","description":"GET or POST the resource to receive an HTTP 402 carrying a machine-readable payment demand; retry with the transaction hash in the X-PAYMENT header and the licence key is returned in the response."},"premium":{"tools":2,"plan":"All-Access","price":"19.00","currency":"USD","period":"month","description":"One licence key unlocks the premium tools on every Moltline server. Billed monthly, cancellable at any time.","purchaseUrl":"https://moltlinestudio.com/#allaccess"}},"authentication":{"required":false},"tools":[{"name":"list_products","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.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"}},{"name":"get_free_skill","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.","tier":"free","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":"readability_report","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.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{"text":{"description":"The passage to analyze — at least one full sentence of plain text; must be non-empty.","minLength":1,"type":"string"},"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"}},"required":["text"],"type":"object"}},{"name":"get_full_product","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.","tier":"premium","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_skill","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.","tier":"premium","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"},"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"}},"required":["slug","skill_name"],"type":"object"}},{"name":"grade_curve","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.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{"scores":{"description":"Raw scores, one per student; at least 1 value, e.g. [88, 92, 75].","items":{"type":"number"},"minItems":1,"type":"array"},"max_score":{"default":100,"description":"Maximum possible score; must be greater than 0. Default 100.","exclusiveMinimum":0,"type":"number"}},"required":["scores"],"type":"object"}},{"name":"lesson_timer","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.","tier":"free","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"}}],"resources":[],"prompts":[]}