Overview#
A remote MCP server (Streamable HTTP) lives at https://api.myskool.xyz/v1/mcp. Two ways to authenticate, same tools either way:
- Sign in with MySkool — OAuth 2.1 + PKCE, dynamic client registration. What claude.ai and ChatGPT speak.
- An API key in the
Authorizationheader, for clients that let you set headers.
Sign in with MySkool (OAuth)#
No key to copy. The client discovers the authorization server from the 401, registers itself, and sends you to the MySkool login. On the consent screen, reads are granted and publishing/deleting is an opt-in checkbox. Each connection shows up under API Keys as a Connector key — revoke it there.
Claude.ai · Claude Desktop · Claude mobile · Cowork#
- Customize → Connectors → Add custom connector (Team/Enterprise owners: Organization settings → Connectors → Add → Custom first).
- Name: MySkool · MCP server URL: https://api.myskool.xyz/v1/mcp. Leave Authentication on what Claude detects (“Sign in now”) and the OAuth client on “Register automatically”.
- Add → Connect. A MySkool tab opens: sign in (magic link or Google) and approve the access request.
- In a chat, open the “+” menu → Connectors and toggle MySkool on. Free plans get one custom connector.
ChatGPT#
- Settings → Security and login → turn on Developer mode (Plus, Pro, Business, Enterprise, Edu).
- Settings → Apps & connectors → Create. Name: MySkool · URL: https://api.myskool.xyz/v1/mcp · Authentication: OAuth.
- Create, then Connect: sign in to MySkool and approve. Enable it from the “+” menu in a chat (Developer mode).
Claude Code#
claude mcp add --transport http -s user myskool https://api.myskool.xyz/v1/mcp
# then, inside Claude Code: /mcp → myskool → Authenticate
Codex#
codex mcp add myskool --url https://api.myskool.xyz/v1/mcp
codex mcp login myskool
OpenClaw#
openclaw mcp set myskool '{"url":"https://api.myskool.xyz/v1/mcp","transport":"streamable-http","auth":"oauth"}'
openclaw mcp login myskool
Or install the native OpenClaw plugin from ClawHub instead: same tools, plus a skill with the Skool rules.
Hermes Agent#
# ~/.hermes/config.yaml — the browser opens on first connect
mcp_servers:
myskool:
url: "https://api.myskool.xyz/v1/mcp"
auth: oauth
Authorization = Bearer sk_live_… as a request header (one shared key for the org).API key header#
Mint a key under API Keys (writes are opt-in) and paste one of these. Without a key the snippets read MYSKOOL_API_KEY from the environment. Add X-Skool-Connection to pin a Skool account.
Claude Code#
# one command, user scope — then /mcp inside Claude Code
claude mcp add --transport http -s user myskool https://api.myskool.xyz/v1/mcp \
--header "Authorization: Bearer sk_live_xxxxxxxxxxxx"
Cursor#
// ~/.cursor/mcp.json (or .cursor/mcp.json in a project)
{
"mcpServers": {
"myskool": {
"url": "https://api.myskool.xyz/v1/mcp",
"headers": {
"Authorization": "Bearer sk_live_xxxxxxxxxxxx"
}
}
}
}
Codex#
# ~/.codex/config.toml
[mcp_servers.myskool]
url = "https://api.myskool.xyz/v1/mcp"
http_headers = { Authorization = "Bearer sk_live_xxxxxxxxxxxx" }
Gemini CLI#
// ~/.gemini/settings.json (or .gemini/settings.json in a project)
{
"mcpServers": {
"myskool": {
"httpUrl": "https://api.myskool.xyz/v1/mcp",
"headers": {
"Authorization": "Bearer sk_live_xxxxxxxxxxxx"
}
}
}
}
OpenClaw#
# or Control UI → Settings → MCP → Add server (Streamable HTTP)
openclaw mcp set myskool '{"url":"https://api.myskool.xyz/v1/mcp","transport":"streamable-http","headers":{"Authorization":"Bearer sk_live_xxxxxxxxxxxx"}}'
Prefer native tools? See the OpenClaw plugin.
Hermes Agent#
# ~/.hermes/config.yaml — then /reload-mcp
mcp_servers:
myskool:
url: "https://api.myskool.xyz/v1/mcp"
headers:
Authorization: "Bearer sk_live_xxxxxxxxxxxx"
Tools#
| Tool | Scope | Maps to |
|---|---|---|
list_groups | groups:read | GET /v1/groups |
get_group | groups:read | GET /v1/groups/:gid |
whoami | groups:read | GET /v1/whoami |
list_posts | posts:read | GET /v1/groups/:gid/posts · pages, sort, since |
get_post | posts:read | GET /v1/posts/:id |
list_comments | comments:read | GET /v1/posts/:id/comments |
create_post | posts:write | POST /v1/groups/:gid/posts |
create_comment | comments:write | POST /v1/posts/:id/comments |
delete_post | posts:write | DELETE /v1/posts/:id |
delete_comment | comments:write | DELETE /v1/comments/:id |
list_dms | dms:read | GET /v1/dms |
get_dm | dms:read | GET /v1/dms/:id |
send_dm | dms:write | POST /v1/dms |
Behavior#
- Scoped.The tool list is filtered by the key's scopes (or the scopes you approved on the consent screen): a read-only connection never sees
create_*/delete_*. - Same limits.
initializeandtools/listare free; each tool call counts as one API request under the same rate limit and monthly quota, and is logged in your usage — OAuth connections included. - Same errors. A failed call returns the API envelope as the tool result (
isError) so the agent can branch onerror.code;list_postsdrives a headless browser, a few seconds per feed page (pages1–30,sortby newest, activity, unread or top). - OAuth details. Discovery at
/.well-known/oauth-protected-resourceand/.well-known/oauth-authorization-server, PKCE S256 required, dynamic client registration open, access tokens last 1 h and refresh withoffline_access. The consent screen always offers “Permitir publicar y borrar” (off by default): tick it to get thecreate_*/delete_*tools. A connection already approved read-only stays read-only until you remove and re-add the connector in the client and approve again. Removing the connector in the client plus revoking the Connector key ends the session. - CLI shortcut.
myskool mcp install --client claudewires it up with your saved key;myskool mcp config --client cursor --envprints a snippet that readsMYSKOOL_API_KEYfrom the environment instead.