REST API and MCP, in one reference.
Bearer token for your own code, OAuth for agents. Same capabilities either way.
Connect your AI tool
Step-by-step MCP setup for Claude Code, Claude Desktop, Cursor, VS Code, Gemini CLI, Codex, Windsurf, Zed, Kimi CLI, OpenClaw, Hermes and any other MCP client.
Schedule & Chill is a remote MCP server. Point your AI tool at one URL and it can schedule posts, upload video from your machine, and read your queue.
Start here: connect with a link
Most people should use this. Paste this URL into your AI tool:
https://schedulenchill.com/mcp-oauth
There is no key to create and nothing to paste into a config file. Your tool sends you to a Schedule & Chill consent screen that names the tool and lists what it is asking for. Approve it once and the tool holds its own token from then on.
It works anywhere there is an Add connector or Add MCP server button — Claude, ChatGPT, Cursor, VS Code, Zapier. Each tool is approved separately, revoking one leaves the others alone, and your password is never shared.
Or connect with an API key
Some clients want a static header instead, and scripts usually do. That endpoint is:
https://schedulenchill.com/mcp
Authorization: Bearer YOUR_API_KEY
Create a key under Settings → API Keys. Use a token with * abilities (the default) —
a restricted token will 401 on media uploads.
Both endpoints expose exactly the same 22 tools, 4 resources and 2 prompts. Nothing is missing from either one; only the sign-in differs.
One click for Cursor and VS Code
Open Connect AI Tool in your account, create a key, and press Add to Cursor or Add to VS Code. Your editor opens a confirmation dialog with the server already filled in — nothing is written until you approve it.
Two connection patterns
Every MCP client falls into one of two camps. Find yours below, or match the pattern.
Pattern A — native remote HTTP. The client accepts a URL, and either runs the OAuth flow for you or lets you set custom headers. Nothing to install.
Pattern B — stdio bridge. The client only speaks stdio to a local process. Use
mcp-remote, which bridges stdio to a remote HTTP MCP server. It handles OAuth on its own
if you give it the connector URL:
npx -y mcp-remote https://schedulenchill.com/mcp-oauth
or carries a static key if you prefer:
npx -y mcp-remote https://schedulenchill.com/mcp --header "Authorization: Bearer YOUR_API_KEY"
Requires Node.js 18+. Nothing to install ahead of time — npx fetches it.
Claude Code
Pattern A. One command, no key:
claude mcp add --transport http schedulenchill https://schedulenchill.com/mcp-oauth
Then run /mcp, pick schedulenchill, and approve it in the browser window that opens.
claude mcp list shows Needs authentication until you do.
Prefer a key? Same command with the other endpoint and a header:
claude mcp add --transport http schedulenchill https://schedulenchill.com/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Then in any session: "Schedule a LinkedIn post for Tuesday 9am about our launch."
Check it registered with claude mcp list. Add --scope project to commit the server to
a repo's .mcp.json and share it with your team (put the key in an env var first — do not
commit it).
Claude Desktop
Claude Desktop's remote connectors expect OAuth, and this server now speaks it. Add it under
Settings → Connectors → Add custom connector and paste
https://schedulenchill.com/mcp-oauth — no config file, no key.
The bridge below is still there if you would rather authenticate with an API key. Edit
claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"schedulenchill": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://schedulenchill.com/mcp",
"--header",
"Authorization: Bearer YOUR_API_KEY"
]
}
}
}
Restart Claude Desktop fully (quit, don't just close the window). The tools appear under the connectors icon.
Cursor
One click: press Add to Cursor on the Connect AI Tool page in your account.
Prefer to do it by hand? Create .cursor/mcp.json in your project, or
~/.cursor/mcp.json for every project:
{
"mcpServers": {
"schedulenchill": {
"url": "https://schedulenchill.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Enable it under Settings → MCP.
VS Code (GitHub Copilot agent mode)
One click: press Add to VS Code on the Connect AI Tool page in your account.
By hand — create .mcp.json in your workspace:
{
"servers": {
"schedulenchill": {
"type": "http",
"url": "https://schedulenchill.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Open Chat, switch to Agent mode, and the tools appear in the tools picker.
Gemini CLI
Pattern A. Edit ~/.gemini/settings.json:
{
"mcpServers": {
"schedulenchill": {
"httpUrl": "https://schedulenchill.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Verify with /mcp inside the CLI.
Codex CLI
Pattern B is the reliable route. Edit ~/.codex/config.toml:
[mcp_servers.schedulenchill]
command = "npx"
args = [
"-y",
"mcp-remote",
"https://schedulenchill.com/mcp",
"--header",
"Authorization: Bearer YOUR_API_KEY",
]
Recent Codex builds can talk to streamable-HTTP servers directly, but that path has moved around between releases. The bridge works on every version.
Windsurf
Pattern A. Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"schedulenchill": {
"serverUrl": "https://schedulenchill.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Zed
Pattern B, via Zed's context servers. In settings.json:
{
"context_servers": {
"schedulenchill": {
"command": {
"path": "npx",
"args": [
"-y",
"mcp-remote",
"https://schedulenchill.com/mcp",
"--header",
"Authorization: Bearer YOUR_API_KEY"
]
}
}
}
}
Kimi CLI
Pattern A. Edit ~/.kimi/mcp.json — the format is deliberately Claude-Desktop-compatible:
{
"mcpServers": {
"schedulenchill": {
"url": "https://schedulenchill.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Manage servers with kimi mcp (add, list, remove), or point at a specific file with
kimi --mcp-config-file /path/to/mcp.json.
OpenClaw
Pattern A. One command:
openclaw mcp add schedulenchill \
--url https://schedulenchill.com/mcp \
--transport streamable-http \
--header "Authorization: Bearer YOUR_API_KEY"
Or edit ~/.openclaw/openclaw.json directly — note servers live under mcp.servers, not
a top-level mcpServers:
{
"mcp": {
"servers": {
"schedulenchill": {
"url": "https://schedulenchill.com/mcp",
"transport": "streamable-http",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
}
Check it with openclaw mcp doctor schedulenchill --probe. OpenClaw expands ${ENV_VAR}
in config, so put the key in an env var rather than committing it.
Hermes
Pattern A, YAML. Edit ~/.hermes/config.yaml and add a top-level mcp_servers key:
mcp_servers:
schedulenchill:
url: "https://schedulenchill.com/mcp"
headers:
Authorization: "Bearer ${SCHEDULENCHILL_KEY}"
Then hermes mcp test schedulenchill, pick tools with hermes mcp configure schedulenchill, and reload with /reload-mcp (or restart the gateway).
ChatGPT
Supported, over OAuth. Use the connector URL, not the API-key endpoint:
https://schedulenchill.com/mcp-oauth
Settings → Connectors → Add, paste the URL, and approve the consent screen. There is no header or key field to fill in — ChatGPT registers itself and gets its own token.
Adding a custom connector needs a paid ChatGPT plan with developer mode enabled. If you do not have that, any ChatGPT surface that can call an HTTP API can use the REST API with a key instead.
Any other MCP client
This covers n8n, LangChain, CrewAI, LibreChat, custom agents, and anything else that speaks MCP.
Ask one question: can it take a remote MCP URL with custom headers?
- Yes → Pattern A. URL
https://schedulenchill.com/mcp, headerAuthorization: Bearer YOUR_API_KEY. The exact JSON key differs per client (url,httpUrl,serverUrl), so copy the shape its own docs use. - No, stdio only → Pattern B with the
npx mcp-remotecommand above.
From your own code, use any MCP client library with the same URL and header. The server speaks standard streamable HTTP MCP — there is nothing bespoke to implement.
If your client isn't listed and you get it working, tell us and we'll add it.
Verify the connection
Ask your tool: "List my connected social accounts." It should call get_accounts and
return your channels.
If nothing happens, work through these in order:
| Symptom | Cause | Fix |
|---|---|---|
| Tools don't appear at all | Client not restarted | Fully quit and reopen — most clients read MCP config only at startup |
401 Unauthorized |
Key wrong, expired, or revoked | Generate a fresh key in Settings → API Keys |
401 only on media upload |
Token lacks * abilities |
Create a new key with default (*) abilities |
platform_unavailable |
Targeting a platform not open on your account | Call get_accounts first — post only to what it returns |
429 Too Many Requests |
Rate limit | 60 requests/min on MCP. Back off and retry after Retry-After |
Bridge errors mentioning npx |
Node.js missing or too old | Install Node.js 18+ |
First things to try
Start with this one. It reads before it writes, so you can confirm the connection works without publishing anything:
Using Schedule & Chill, list my connected social accounts. Then write a short LinkedIn post about what I shipped this week and schedule it for 5 minutes from now — show me the draft first so I can approve it.
Five minutes, not next week — the point of the first run is watching it actually publish.
Then, in plain language:
- "List my connected social accounts."
- "Draft a LinkedIn post about shipping our free tier and schedule it for 10 minutes from now."
- "Upload
~/Videos/demo.mp4and schedule it to LinkedIn tomorrow morning." - "What's in my posting queue this week?"
- "Cancel the post scheduled for Friday."
Uploading a video from your own machine works even for large files — see Uploading video from your computer. Your AI tool streams it in chunks rather than posting one huge request, so there's no size cliff.
What your AI tool can do
Full parameters in Tools.
| Tool | What it does |
|---|---|
get_accounts |
List connected channels. Always call this first. |
get_groups |
List saved channel groups |
schedule_post |
Schedule or publish immediately |
update_post |
Edit a draft or scheduled post |
get_post |
Read one post and its per-channel status |
list_scheduled |
See the queue |
cancel_post |
Remove a scheduled post |
upload_media |
Upload from a URL, or stream a local file of any size |
browse_media |
Search the media library |
get_stats |
Posting stats |