# HiveLearn

> Read and author HiveLearn courses, events, quizzes, certificates, resources, leaderboards, tracks.

- name: io.github.williamechevarria/hivelearn-mcp
- version: 0.4.0
- connection class: R1 (autonomous)
- trust: 93/100
- quality: 74/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.williamechevarria%2Fhivelearn-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.williamechevarria%2Fhivelearn-mcp/tools

**An agent can connect on its own if it already holds `X_HIVELEARN_API_KEY`, `X_HIVELEARN_API_KEY`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "hivelearn-mcp": {
      "type": "http",
      "url": "https://mcp.hivelearn.app",
      "headers": {
        "X-Hivelearn-Api-Key": "${X_HIVELEARN_API_KEY}",
        "Authorization": "${X_HIVELEARN_API_KEY}"
      }
    }
  }
}
```

Placeholders to fill: `${X_HIVELEARN_API_KEY}`, `${X_HIVELEARN_API_KEY}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 75
- drivers: +repository +website +reachable +uptime-100% +updated-29d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 74/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 64 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: hivelearn_list_quiz_questions (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); hivelearn_create_enrollment (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); hivelearn_create_certificate (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- warn `tools.token_cost`: about 19,267 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: 67 (weight 15)

- pass `deps.known_vulns`: no known advisory in 98 resolved packages
- fail `deps.mcp_sdk_version`: @modelcontextprotocol/sdk 1.30.1 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or later
- pass `deps.resolvable`: hivelearn-mcp@0.1.2 resolved: 98 packages

- tools: 96, about 19,267 tokens to load them all
- tool set hash: 963e31c93300df4164ceb617e8243f87
- tools last changed: 2026-10-08T17:25:40.506Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.williamechevarria/hivelearn-mcp.svg)](https://protogrid.dev/servers/io.github.williamechevarria/hivelearn-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-08 `hivelearn_generate_ai_course` changed (description, inputSchema)
  - before: 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 (paid plans only). Confirm with the user before calling. Requires the explicit generate:ai_courses scope, which admin:* does NOT include. source_type video_url imports a public YouTube/Vimeo/Loom link; every other type needs a file already uploaded to HiveLearn media storage (external URLs are rejected). Limited to 2 running and 10 per hour.
  - after: 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 (paid plans only), plus 1 when include_recap_video is true in a video mode. Confirm with the user before calling. Requires the explicit generate:ai_courses scope, which admin:* does NOT include. source_type video_url imports a public YouTube/Vimeo/Loom link; every other type needs a file already uploaded to HiveLearn media storage (external URLs are rejected). Limited to 2 running and 10 per hour.

Full history: https://api.protogrid.dev/v1/servers/io.github.williamechevarria%2Fhivelearn-mcp/changes

## Dependencies

- npm hivelearn-mcp@0.1.2: resolved, 97 dependencies, MCP SDK @modelcontextprotocol/sdk 1.30.1
  - GHSA-6qxp-vccf-f47h (high) in `` @modelcontextprotocol/sdk@1.30.1 ``, direct, fixed in `` 1.31.0 ``, advisory summary: "MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server" https://osv.dev/vulnerability/GHSA-6qxp-vccf-f47h

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://mcp.hivelearn.app (streamable-http, auth api_key ${X_HIVELEARN_API_KEY}, reachable true, uptime30d 1)

## Packages

- npm hivelearn-mcp@0.1.2 secrets: HIVELEARN_API_KEY

## Tools (96)

- `hivelearn_add_member_tag`: Assign a tag to a member. Idempotent: returns the existing assignment if already tagged.
- `hivelearn_add_track_course`: 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 completed first (omit/null for no gate). is_required defaults to true.
- `hivelearn_create_certificate`: 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 awards.
- `hivelearn_create_course`: Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson placeholders in one call.
- `hivelearn_create_course_outline`: Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesson ids with hivelearn_update_lesson_content to fill in video/document URLs. This is the preferred first step when authoring a new course from a plan.
- `hivelearn_create_discussion`: 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 notifications on.
- `hivelearn_create_discussion_reply`: 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 discussion is locked. Set parent_reply_id to nest under another reply.
- `hivelearn_create_enrollment`: Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected.
- `hivelearn_create_event`: 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 UI shows.
- `hivelearn_create_lesson`: 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; otherwise pass a module uuid from list_course_modules.
- `hivelearn_create_member_note`: Add a private admin note to a member. The author is the API key's creator.
- `hivelearn_create_member_tag`: Create a member tag. Names are unique per community (409 on duplicate).
- `hivelearn_create_module`: Add a module to a course. sort_order is optional — server auto-appends if omitted.
- `hivelearn_create_post`: 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. category is optional — omit for default "general".
- `hivelearn_create_post_comment`: 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 parent_comment_id to reply to another comment on the same post.
- `hivelearn_create_question_bank`: Create an empty question bank. Add questions with hivelearn_create_question_bank_item.
- `hivelearn_create_question_bank_item`: 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), accepted_answers (fill_in_blank), pairs (matching), items (ordering).
- `hivelearn_create_quiz`: Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited.
- `hivelearn_create_quiz_question`: 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 → options with one or more correct; true_false → correct_answer (boolean); fill_in_blank → accepted_answers; matching → pairs [{left, right}]; ordering → items [{text}] in correct order (or with position 1..n).
- `hivelearn_create_resource`: 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 be > 0 if set (omit for free). access_level defaults to public.
- `hivelearn_create_resource_folder`: 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 > 0 if set.
- `hivelearn_create_track`: Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish once the curriculum is set.
- `hivelearn_generate_ai_course`: 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 (paid plans only), plus 1 when include_recap_video is true in a video mode. Confirm with the user before calling. Requires the explicit generate:ai_courses scope, which admin:* does NOT include. source_type video_url imports a public YouTube/Vimeo/Loom link; every other type needs a file already uploaded to HiveLearn media storage (external URLs are rejected). Limited to 2 running and 10 per hour.
- `hivelearn_get_ai_credits`: 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 Course Builder is enabled for this community. Check this before generating. Needs scope read:ai.
- `hivelearn_get_ai_job`: Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_step shows the phase; course_id is the resulting course. A job that stays queued with started_at null was never picked up and is failed and refunded automatically within about an hour. Needs scope read:ai.
- `hivelearn_get_analytics_summary`: Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate), published courses, and events created/held with RSVPs and check-ins. Definitions match the admin dashboard. Requires read:analytics.
- `hivelearn_get_assignment_submission`: Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses.
- `hivelearn_get_certificate`: Fetch one certificate by id. Includes verification_code and download URL.
- `hivelearn_get_community_me`: 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, you cannot switch community.
- `hivelearn_get_course`: Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead.
- `hivelearn_get_course_analytics`: Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress, and average rating. Paginated. Requires read:analytics.
- `hivelearn_get_course_gradebook`: Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards.
- `hivelearn_get_course_progress`: Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count.
- `hivelearn_get_course_structure`: 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 NOT include lesson body content.
- `hivelearn_get_discussion`: Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies.
- `hivelearn_get_enrollment`: Fetch one enrollment with status and progress.
- `hivelearn_get_event`: Fetch one event by id with full description and RSVP metadata.
- `hivelearn_get_leaderboard`: 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 selected period, plus level info.
- `hivelearn_get_member`: Fetch a single member by profile uuid. Returns the same fields as list_members for one row.
- `hivelearn_get_member_health`: Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them.
- `hivelearn_get_member_points`: Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 404 if the member has no points record here.
- `hivelearn_get_post`: Fetch one post with full content. Reply thread is NOT included — this is the post itself only.
- `hivelearn_get_question_bank`: Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items.
- `hivelearn_get_quiz`: Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions.
- `hivelearn_get_resource`: Fetch one published resource by id, with joined author. 404 if unpublished or in another community.
- `hivelearn_get_resource_folder`: Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community.
- `hivelearn_get_track`: Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses.
- `hivelearn_get_track_progress`: Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics.
- `hivelearn_grade_assignment_submission`: Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's creator. This changes a member's record and the student will see it. revision_requested requires feedback. Requires write:grades.
- `hivelearn_list_ai_jobs`: List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai.
- `hivelearn_list_assignment_submissions`: List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:courses.
- `hivelearn_list_certificates`: List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at.
- `hivelearn_list_course_lessons`: List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree.
- `hivelearn_list_course_modules`: List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules.
- `hivelearn_list_courses`: List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_url, timestamps.
- `hivelearn_list_discussion_replies`: List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count.
- `hivelearn_list_discussions`: List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author.
- `hivelearn_list_enrollments`: List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at.
- `hivelearn_list_event_attendees`: 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 read:events.
- `hivelearn_list_events`: List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_url, attendee counts.
- `hivelearn_list_event_waitlist`: List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events.
- `hivelearn_list_member_notes`: List private admin notes on a member, newest first.
- `hivelearn_list_members`: 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/owners.
- `hivelearn_list_member_tag_assignments`: List the tags assigned to a member.
- `hivelearn_list_member_tags`: List the community's member tags (id, name, color).
- `hivelearn_list_post_comments`: 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.
- `hivelearn_list_posts`: List community feed posts, newest first. Use category to filter (e.g. "announcements"). Returns id, title, content, category, author, reply counts, timestamps.
- `hivelearn_list_question_bank_items`: List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins.
- `hivelearn_list_question_banks`: List question banks (reusable question pools that bank-draw quizzes sample from), newest first.
- `hivelearn_list_quiz_attempts`: 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. Requires read:courses.
- `hivelearn_list_quiz_questions`: List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer.
- `hivelearn_list_quizzes`: List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson.
- `hivelearn_list_resource_folders`: 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 top-level only, or a folder id for its children. Each folder includes resource_count.
- `hivelearn_list_resources`: List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, resource_url/file_url, access_level, counts (downloads, views, favorites), author. The internal storage key is never exposed.
- `hivelearn_list_segment_members`: List members matching a segment's rules, evaluated server-side the same way the admin CRM does.
- `hivelearn_list_segments`: List saved member segments with their filter rules.
- `hivelearn_list_track_courses`: Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating).
- `hivelearn_list_tracks`: List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, flags.
- `hivelearn_publish_course`: 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_course_structure to diagnose.
- `hivelearn_reorder_module_lessons`: 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 exactly once.
- `hivelearn_update_certificate`: Change a certificate status. Use "revoked" to invalidate (verify endpoint will reject).
- `hivelearn_update_course`: Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation.
- `hivelearn_update_event`: Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap.
- `hivelearn_update_lesson`: Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer).
- `hivelearn_update_lesson_content`: Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. Does NOT change title, sort_order, or module assignment.
- `hivelearn_update_member`: 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 least one field required.
- `hivelearn_update_module`: Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons.
- `hivelearn_update_post`: 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.
- `hivelearn_update_question_bank`: Rename a question bank or change its description.
- `hivelearn_update_question_bank_item`: Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type.
- `hivelearn_update_quiz`: Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead.
- `hivelearn_update_quiz_question`: 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 answer for the effective type.
- `hivelearn_update_resource`: Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist.
- `hivelearn_update_resource_folder`: 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 is rejected. Only supplied fields change.
- `hivelearn_update_track`: Edit a learning track. Only include fields you want to change. Set is_published=true to make it live.
- `hivelearn_verify_certificate`: Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code.
