Your first request
Every TryHelper action runs through a single endpoint. Send an action, the groupSlug, and any params. Authenticate with a bearer key from your dashboard.
Base URL · https://tryhelper.co
Two layers of auth
TryHelper separates your account auth from Skool's session. You authenticate to TryHelper with a bearer key or OAuth; TryHelper holds the Skool session for each connected group and refreshes it for you.
API key (server-to-server)
Pass Authorization: Bearer sk_live_… on every request. Create and revoke keys from the dashboard.
OAuth + MCP (for Claude)
Add the MCP URL to Claude and authorize once with your TryHelper account. Tokens are code-only with PKCE S256 — your Skool password is never exposed. Endpoints: /authorize, /oauth/token, /oauth/register.
One login, reused for days
Connecting logs into Skool once and stores the session cookies (encrypted). Each call carries a groupSlug, so one admin login can operate every community you manage.
Connect — POST /v1/groups/connect with the group slug + your Skool admin login. We capture cookies and discard the password unless you enable auto-refresh.
Operate — Call any action with that slug — posts, members, classroom, calendar, files. Results come back as a JSON envelope.
Refresh — On expiry we re-login automatically (if enabled), or you reconnect in one click. 2FA-protected Skool accounts aren't supported.
Tool reference
35 actions, plus skool_list_groups to list the communities connected to your account. The REST action and the MCP tool name (skool_*) are two faces of the same call.
Posts
Create, read, edit, and moderate posts and comments.
posts:listList posts in a connected Skool group.posts:getGet a single post (and its comment tree) by its post name/slug.posts:createCreate a post.posts:editEdit an existing post by its id.posts:deleteDelete a post (or a comment — comments are posts) by its id.posts:upvoteLike (upvote) a post by its id.posts:unvoteRemove your like (unvote) from a post by its id.posts:pinPin a post to the top of the group feed (owner/admin only).posts:unpinUnpin a post from the group feed (owner/admin only).posts:commentComment on a post, or reply to a comment.Members
Manage membership, requests, payments, and exports.
members:listList members of a group.members:approveApprove a pending membership request by its membershipId (member.id from a pending list).members:removeRemove a member from the group by membershipId (member.id from skool_members_list).members:banBan a member from the group by membershipId (member.id from skool_members_list).members:coursesGet a member's classroom course access and progress by membershipId (member.id from skool_members_list) — which courses they can access and whether each is completed.members:paymentsGet a member's payment/invoice history by membershipId (member.id from skool_members_list).members:exportExport the group's members as a CSV (email, join date, tier, application answers).Classroom
Build courses, folders, and lessons.
classroom:listList classroom courses (and their structure) in a group.classroom:createCourseCreate a classroom course.classroom:updateCourseUpdate an existing course's settings by its unitId (the course id): title, description, and/or cover image.classroom:createUnitCreate a folder or page inside a course.classroom:deleteUnitDelete a classroom unit (course/folder/page) by its id.classroom:setBodySet a classroom lesson/page's title, body, and optional video by its unitId (the page/module id).Calendar
List, create, edit, and delete events.
calendar:listList calendar events in a group (returns each event's id, for editing/deleting).calendar:createCreate a calendar event.calendar:editEdit a calendar event.calendar:deleteDelete a calendar event by its eventId.Messages
Find members and send direct messages.
messages:channelsList your direct-message (chat) channels — each with the other participant and the channel id needed to send.messages:searchUsersSearch users you can start a DM with, by name.messages:sendSend a direct message to an existing chat channel.messages:dmMemberDirect-message a member of a group in one step: opens (or reuses) the DM channel with that member and sends the message.Video & files
Upload lesson video and embeddable files.
videos:createUploadStart a lesson video upload.videos:getGet a lesson video's processing status/metadata by videoId.files:uploadUpload an image/file to the group and get back a public URL to embed (e.g.Group
Read group metadata, labels, and stats.
group:getGet metadata about one of your connected Skool groups (name, members, post categories/labels, plan, etc.).REST endpoints
Never a hard fail
Actions return 200 with a JSON body — check success first. On failure you get an error message and an errorCode you can branch on.
Stay under the ceiling
Limits apply per account + group, with stricter ceilings on heavy actions (bans, removals, exports). Both the MCP and REST paths share the same limiter.
Exceed a window and you'll get RATE_LIMIT — back off 60–120 seconds and retry. For bulk jobs, queue writes and spread them across minutes.