{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_77w2h98e8kvn","handle":"hivelearn","url":"https://wellknown.network/agents/hivelearn","links":{"self":"https://wellknown.network/agents/hivelearn/record.json","html":"https://wellknown.network/agents/hivelearn","markdown":"https://wellknown.network/agents/hivelearn/record.md","api":"https://wellknown.network/api/v1/agents/hivelearn","status":"https://wellknown.network/api/v1/agents/hivelearn/status","claim":"https://wellknown.network/agents/hivelearn/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/hivelearn/claim.json","badge":"https://wellknown.network/agents/hivelearn/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/hivelearn/history","tools":"https://wellknown.network/api/v1/agents/hivelearn/tools"},"ard":{"identifier":"urn:air:mcp.hivelearn.app:server:hivelearn","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"HiveLearn","summary":"Read and author HiveLearn courses, events, quizzes, certificates, resources, leaderboards, tracks.","description":"Read and author HiveLearn courses, events, quizzes, certificates, resources, leaderboards, tracks.","publisher":{"name":"williamechevarria","url":null},"homepage":"https://hivelearn.app/mcp","repository":"https://github.com/hivelearn/community-hub","version":"0.4.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.hivelearn.app","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"npm:hivelearn-mcp","type":"package_npm","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-21T16:29:30.634568Z","publishedAt":"2026-09-21T16:29:30.634568Z","registryName":"io.github.williamechevarria/hivelearn-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":1,"provenance":"derived"},{"slug":"analytics.product","name":"Product Analytics","confidence":0.885,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":0.583,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":0.54,"provenance":"derived"},{"slug":"ai.evaluation","name":"Evaluation & Benchmarks","confidence":0.51,"provenance":"derived"}],"categories":["ai","analytics","communication","content","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-12T01:26:59.827Z","lastProbedAt":"2026-10-12T01:26:59.827Z","statusComputedAt":"2026-10-12T01:28:03.615Z","reliability30d":{"probes":110,"successRate":1,"p50Ms":288,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":109,"ok":109,"authBoundaryOk":0,"serviceOk":109,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-12T01:26:59.827Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":259,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T19:24:03.074Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":264,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T13:25:13.843Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":223,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T07:22:45.726Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":199,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-11T01:21:55.345Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":302,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T18:27:03.691Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":323,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T11:25:38.306Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":364,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T05:30:04.346Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":218,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T23:30:34.958Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":383,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T17:27:39.948Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":205,"error":null,"detail":{"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"toolCount":96,"toolsHash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","serverName":"hivelearn","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"hivelearn_get_community_me","description":"Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy"},{"name":"hivelearn_list_members","description":"List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owne"},{"name":"hivelearn_get_member","description":"Fetch a single member by profile uuid. Returns the same fields as list_members for one row."},{"name":"hivelearn_update_member","description":"Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At l"},{"name":"hivelearn_list_posts","description":"List community feed posts, newest first. Use category to filter (e.g. \"announcements\"). Returns id, title, content, category, author, reply counts, timestamps."},{"name":"hivelearn_get_post","description":"Fetch one post with full content. Reply thread is NOT included — this is the post itself only."},{"name":"hivelearn_create_post","description":"Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. catego"},{"name":"hivelearn_update_post","description":"Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed."},{"name":"hivelearn_list_events","description":"List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_"},{"name":"hivelearn_get_event","description":"Fetch one event by id with full description and RSVP metadata."},{"name":"hivelearn_create_event","description":"Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the "},{"name":"hivelearn_update_event","description":"Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap."},{"name":"hivelearn_list_courses","description":"List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_u"},{"name":"hivelearn_get_course","description":"Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead."},{"name":"hivelearn_create_course","description":"Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson"},{"name":"hivelearn_update_course","description":"Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation."},{"name":"hivelearn_list_course_modules","description":"List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules."},{"name":"hivelearn_create_module","description":"Add a module to a course. sort_order is optional — server auto-appends if omitted."},{"name":"hivelearn_update_module","description":"Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons."},{"name":"hivelearn_list_course_lessons","description":"List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree."},{"name":"hivelearn_create_lesson","description":"Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; othe"},{"name":"hivelearn_update_lesson","description":"Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer)."},{"name":"hivelearn_create_course_outline","description":"Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesso"},{"name":"hivelearn_update_lesson_content","description":"Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. "},{"name":"hivelearn_reorder_module_lessons","description":"Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exac"},{"name":"hivelearn_publish_course","description":"Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_cour"},{"name":"hivelearn_get_course_structure","description":"Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does "},{"name":"hivelearn_list_quizzes","description":"List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson."},{"name":"hivelearn_get_quiz","description":"Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions."},{"name":"hivelearn_create_quiz","description":"Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited."},{"name":"hivelearn_update_quiz","description":"Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead."},{"name":"hivelearn_list_quiz_questions","description":"List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer."},{"name":"hivelearn_create_quiz_question","description":"Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → "},{"name":"hivelearn_update_quiz_question","description":"Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full"},{"name":"hivelearn_list_enrollments","description":"List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at."},{"name":"hivelearn_get_enrollment","description":"Fetch one enrollment with status and progress."},{"name":"hivelearn_create_enrollment","description":"Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected."},{"name":"hivelearn_get_course_progress","description":"Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count."},{"name":"hivelearn_get_course_gradebook","description":"Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards."},{"name":"hivelearn_list_certificates","description":"List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at."},{"name":"hivelearn_get_certificate","description":"Fetch one certificate by id. Includes verification_code and download URL."},{"name":"hivelearn_create_certificate","description":"Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awa"},{"name":"hivelearn_update_certificate","description":"Change a certificate status. Use \"revoked\" to invalidate (verify endpoint will reject)."},{"name":"hivelearn_verify_certificate","description":"Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code."},{"name":"hivelearn_list_resources","description":"List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, re"},{"name":"hivelearn_get_resource","description":"Fetch one published resource by id, with joined author. 404 if unpublished or in another community."},{"name":"hivelearn_create_resource","description":"Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must b"},{"name":"hivelearn_update_resource","description":"Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist."},{"name":"hivelearn_get_leaderboard","description":"Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the sel"},{"name":"hivelearn_get_member_points","description":"Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 4"},{"name":"hivelearn_list_tracks","description":"List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, fla"},{"name":"hivelearn_get_track","description":"Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses."},{"name":"hivelearn_list_track_courses","description":"Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating)."},{"name":"hivelearn_get_track_progress","description":"Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics."},{"name":"hivelearn_create_track","description":"Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish on"},{"name":"hivelearn_update_track","description":"Edit a learning track. Only include fields you want to change. Set is_published=true to make it live."},{"name":"hivelearn_add_track_course","description":"Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be comple"},{"name":"hivelearn_get_ai_credits","description":"AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Cour"},{"name":"hivelearn_list_ai_jobs","description":"List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai."},{"name":"hivelearn_get_ai_job","description":"Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_st"},{"name":"hivelearn_generate_ai_course","description":"Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (p"},{"name":"hivelearn_list_event_attendees","description":"List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope rea"},{"name":"hivelearn_list_event_waitlist","description":"List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events."},{"name":"hivelearn_list_post_comments","description":"List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community."},{"name":"hivelearn_create_post_comment","description":"Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set paren"},{"name":"hivelearn_list_discussions","description":"List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author."},{"name":"hivelearn_get_discussion","description":"Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies."},{"name":"hivelearn_create_discussion","description":"Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notification"},{"name":"hivelearn_list_discussion_replies","description":"List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count."},{"name":"hivelearn_create_discussion_reply","description":"Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussi"},{"name":"hivelearn_get_analytics_summary","description":"Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate),"},{"name":"hivelearn_get_course_analytics","description":"Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress"},{"name":"hivelearn_list_quiz_attempts","description":"List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Req"},{"name":"hivelearn_list_assignment_submissions","description":"List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:cours"},{"name":"hivelearn_get_assignment_submission","description":"Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses."},{"name":"hivelearn_grade_assignment_submission","description":"Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's "},{"name":"hivelearn_list_resource_folders","description":"List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id=\"root\" for"},{"name":"hivelearn_get_resource_folder","description":"Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community."},{"name":"hivelearn_create_resource_folder","description":"Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be >"},{"name":"hivelearn_update_resource_folder","description":"Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant "},{"name":"hivelearn_list_question_banks","description":"List question banks (reusable question pools that bank-draw quizzes sample from), newest first."},{"name":"hivelearn_get_question_bank","description":"Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items."},{"name":"hivelearn_create_question_bank","description":"Create an empty question bank. Add questions with hivelearn_create_question_bank_item."},{"name":"hivelearn_update_question_bank","description":"Rename a question bank or change its description."},{"name":"hivelearn_list_question_bank_items","description":"List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins."},{"name":"hivelearn_create_question_bank_item","description":"Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), acc"},{"name":"hivelearn_update_question_bank_item","description":"Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type."},{"name":"hivelearn_list_member_notes","description":"List private admin notes on a member, newest first."},{"name":"hivelearn_create_member_note","description":"Add a private admin note to a member. The author is the API key's creator."},{"name":"hivelearn_list_member_tags","description":"List the community's member tags (id, name, color)."},{"name":"hivelearn_create_member_tag","description":"Create a member tag. Names are unique per community (409 on duplicate)."},{"name":"hivelearn_list_member_tag_assignments","description":"List the tags assigned to a member."},{"name":"hivelearn_add_member_tag","description":"Assign a tag to a member. Idempotent: returns the existing assignment if already tagged."},{"name":"hivelearn_list_segments","description":"List saved member segments with their filter rules."},{"name":"hivelearn_list_segment_members","description":"List members matching a segment's rules, evaluated server-side the same way the admin CRM does."},{"name":"hivelearn_get_member_health","description":"Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them."}],"package":null,"toolSurface":{"id":"ts_z959zcy8y5br","endpointId":"ep_7td622bxggkc","hash":"751157c9eaceb7674f67fc193e3a47e071f2137fb0f1a6ab429f7ad8eb732818","toolCount":96,"serverName":"hivelearn","serverVersion":"0.3.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-08T16:28:02.470Z","lastSeenAt":"2026-10-12T01:26:59.829Z","observations":14,"toolNames":["hivelearn_get_community_me","hivelearn_list_members","hivelearn_get_member","hivelearn_update_member","hivelearn_list_posts","hivelearn_get_post","hivelearn_create_post","hivelearn_update_post","hivelearn_list_events","hivelearn_get_event","hivelearn_create_event","hivelearn_update_event","hivelearn_list_courses","hivelearn_get_course","hivelearn_create_course","hivelearn_update_course","hivelearn_list_course_modules","hivelearn_create_module","hivelearn_update_module","hivelearn_list_course_lessons","hivelearn_create_lesson","hivelearn_update_lesson","hivelearn_create_course_outline","hivelearn_update_lesson_content","hivelearn_reorder_module_lessons","hivelearn_publish_course","hivelearn_get_course_structure","hivelearn_list_quizzes","hivelearn_get_quiz","hivelearn_create_quiz","hivelearn_update_quiz","hivelearn_list_quiz_questions","hivelearn_create_quiz_question","hivelearn_update_quiz_question","hivelearn_list_enrollments","hivelearn_get_enrollment","hivelearn_create_enrollment","hivelearn_get_course_progress","hivelearn_get_course_gradebook","hivelearn_list_certificates","hivelearn_get_certificate","hivelearn_create_certificate","hivelearn_update_certificate","hivelearn_verify_certificate","hivelearn_list_resources","hivelearn_get_resource","hivelearn_create_resource","hivelearn_update_resource","hivelearn_get_leaderboard","hivelearn_get_member_points","hivelearn_list_tracks","hivelearn_get_track","hivelearn_list_track_courses","hivelearn_get_track_progress","hivelearn_create_track","hivelearn_update_track","hivelearn_add_track_course","hivelearn_get_ai_credits","hivelearn_list_ai_jobs","hivelearn_get_ai_job","hivelearn_generate_ai_course","hivelearn_list_event_attendees","hivelearn_list_event_waitlist","hivelearn_list_post_comments","hivelearn_create_post_comment","hivelearn_list_discussions","hivelearn_get_discussion","hivelearn_create_discussion","hivelearn_list_discussion_replies","hivelearn_create_discussion_reply","hivelearn_get_analytics_summary","hivelearn_get_course_analytics","hivelearn_list_quiz_attempts","hivelearn_list_assignment_submissions","hivelearn_get_assignment_submission","hivelearn_grade_assignment_submission","hivelearn_list_resource_folders","hivelearn_get_resource_folder","hivelearn_create_resource_folder","hivelearn_update_resource_folder","hivelearn_list_question_banks","hivelearn_get_question_bank","hivelearn_create_question_bank","hivelearn_update_question_bank","hivelearn_list_question_bank_items","hivelearn_create_question_bank_item","hivelearn_update_question_bank_item","hivelearn_list_member_notes","hivelearn_create_member_note","hivelearn_list_member_tags","hivelearn_create_member_tag","hivelearn_list_member_tag_assignments","hivelearn_add_member_tag","hivelearn_list_segments","hivelearn_list_segment_members","hivelearn_get_member_health"],"distinctSurfaces":3},"endpointFacts":[{"id":"ep_7td622bxggkc","url":"https://mcp.hivelearn.app","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T09:22:40.370Z","auth":{"observedAt":"2026-10-08T09:22:40.530Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T09:22:40.557Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.hivelearn.app","issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validFrom":"2026-08-22T05:40:38.000Z","validTo":"2026-11-20T05:40:37.000Z","daysToExpiry":38,"sanCount":1,"fingerprint256":"5B:B6:60:F6:10:32:0F:A6:C2:24:78:E1:35:BF:06:D6:10:E0:A5:FC:97:A6:05:E2:09:6B:D4:AF:3F:B3:6A:EB"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.williamechevarria/hivelearn-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.williamechevarria%2Fhivelearn-mcp","firstSeenAt":"2026-09-07T06:18:07.347Z","fetchedAt":"2026-10-11T11:19:41.805Z","normalizedAt":"2026-10-11T11:19:41.805Z"}]},"firstSeenAt":"2026-09-07T06:18:07.347Z","updatedAt":"2026-10-12T01:29:21.807Z"}