# Radi8 MCP connector reference > For developers, agents, and anyone connecting a client of their own. To help a person install Radi8 in ChatGPT or Claude, use https://www.radi8.com/install.md instead. The same reference as a web page: https://www.radi8.com/connector. Radi8 is a hosted remote MCP server. It holds a person's brand context, content strategy, monthly plan, drafts, schedule, and published posts, and it schedules posts to their connected channels (LinkedIn, X, Instagram, Facebook, TikTok). Radi8 is listed in Claude's connector directory and is an approved ChatGPT plugin; any client that supports remote MCP servers can connect with the details below. | | | |---|---| | Endpoint | `https://app.radi8.com/api/mcp` | | Transport | Streamable HTTP, stateless | | Sign-in | OAuth 2.1 with PKCE and dynamic client registration, or an API key | | Scope | `mcp` | | Tools | 36, in 9 groups | ## Server - Endpoint: `https://app.radi8.com/api/mcp` - Transport: Streamable HTTP, stateless. There is no session id; every request stands on its own. - The server sends instructions for its tools in the `initialize` result. Clients that pass them to the model get better results. ## Sign-in (OAuth 2.1) - A request without a token gets `401` with `WWW-Authenticate: Bearer resource_metadata="https://app.radi8.com/.well-known/oauth-protected-resource/api/mcp", scope="mcp"`. - Protected resource metadata: `https://app.radi8.com/.well-known/oauth-protected-resource/api/mcp`. Authorization server metadata: `https://app.radi8.com/.well-known/oauth-authorization-server`. - Dynamic client registration (RFC 7591) at `https://app.radi8.com/api/mcp/register`. Clients are public: `token_endpoint_auth_method` is `none`. - Authorization code grant with PKCE; `S256` is required. Authorization codes expire after 10 minutes, and the `redirect_uri` must match the registered one exactly. - One scope: `mcp`. Tokens are bound to the resource `https://app.radi8.com/api/mcp` (RFC 8707); the `resource` parameter is optional and defaults to it. - A token works until the person revokes it in Radi8. ## API keys - For a client that cannot run the browser sign-in (a script, a server-side agent, a homegrown client), create an API key in the Radi8 app: **Settings**, then **Connect to Chat**, then **Your API keys**. The key is shown once; it starts with `radi8_`. - Send it as a bearer token: `Authorization: Bearer radi8_...`. It acts as the person who created it, with the same access as the OAuth flow. - A person can hold up to 10 keys. Every key and every OAuth connection is listed under **Your API keys**, where it can be revoked. Revoking one does not affect the others. - Treat a key like a password: it can schedule posts to public accounts. ## Workspaces - One token is one Radi8 user. A user has a personal workspace and may administer company workspaces. - A new token has no active workspace. Until one is chosen, content tools return an error result that says so. Call `list_accounts`, ask the person which workspace to use, then call `set_active_account`. The choice is saved on the token. - Only company workspaces the person administers can be selected. ## Tested clients - **Claude**: claude.ai, Claude Desktop, and the Claude mobile apps. Add Radi8 from the connector directory. Listing: https://claude.ai/directory/radi8. Guide: https://www.radi8.com/install/claude - **ChatGPT**: The approved Radi8 plugin. Listing: https://chatgpt.com/plugins/plugin_asdk_app_6aa7145d7df48191b7dccca0d62755c7. Guide: https://www.radi8.com/install/chatgpt - **Claude Code**: Uses the connectors on the claude.ai account it signs in with, so Radi8 added in Claude appears on its own. Or add it to a project: `claude mcp add --transport http radi8 https://app.radi8.com/api/mcp`, start a new session, then run `/mcp` and choose **Authenticate**. Guide: https://www.radi8.com/install/claude ## Tools Hints are the annotations each tool declares: read (readOnlyHint), destructive (destructiveHint), open-world (openWorldHint: reaches outside Radi8, to a social channel or a public URL). ### Workspaces For example: "List my Radi8 workspaces and switch to my company." - `list_accounts` (read) - `get_active_account` (read) - `set_active_account` (write) ### Brand context and strategy For example: "Check what Radi8 knows about my brand and ask me about anything missing." - `get_brand_context` (read) - `update_brand_context` (write, destructive) - `get_strategy` (read) - `update_strategy` (write, destructive) ### Monthly plan For example: "What is in this month's plan that I have not posted about yet?" - `get_plan` (read) - `get_plan_items` (read) - `update_plan` (write, destructive) - `create_plan_item` (write) - `edit_plan_item` (write, destructive) - `delete_plan_item` (write, destructive) - `create_campaign` (write) ### Drafts For example: "Draft a LinkedIn post in my voice about what we shipped this week." - `list_drafts` (read) - `create_draft` (write) - `edit_draft` (write, destructive) - `delete_draft` (write, destructive) ### Scheduling For example: "Write a version of that for X and schedule it for next Tuesday at 9am." - `get_connected_channels` (read) - `list_scheduled_posts` (read) - `schedule_post` (write, destructive, open-world) - `schedule_draft` (write, destructive, open-world) - `edit_scheduled_post` (write, destructive) - `unschedule_post` (write, destructive) - `delete_scheduled_post` (write, destructive) ### Published posts and comments For example: "Add the article link as the first comment on my latest LinkedIn post." - `list_published_posts` (read) - `get_post_comments` (read, open-world) - `create_comment` (write, destructive, open-world) - `reply_to_comment` (write, destructive, open-world) ### Media For example: "Attach the product photo from my media library." - `get_media_library` (read) - `upload_image` (write, open-world) ### Brand kit For example: "Build my brand kit from this screenshot of our homepage." - `get_brand_kit` (read) - `update_brand_kit` (write, destructive) - `set_brand_kit_asset` (write, destructive) - `extract_brand_kit_from_image` (write, destructive, open-world) ### Saved inspiration For example: "Show me what I saved in Discover that I could write about." - `get_discover_items` (read) ## Limits - Posts publish at their scheduled time; there is no publish-now. Scheduled times must be in the future. - Comments and replies on LinkedIn post right away. - Nothing already published can be edited or deleted. - No image or video generation. Images come from a public URL (`upload_image`) or the person's media library; raw image bytes are not accepted. ## Errors - Tool failures are tool results with `isError: true` and a message written for the model, not JSON-RPC errors. Pass the message to the model: it says what to do next. - A new account comes with credits to try Radi8. Once they are used up, tools that need a subscription return an `isError` result that links to billing in the app. - A rejected token gets `401` with `error="invalid_token"` or `error="insufficient_scope"` in `WWW-Authenticate`; start the sign-in again. - Requests are rate-limited. On `429`, wait and retry. ## Your data - When you use the connector, the workspace data your assistant asks for is sent to the provider of that assistant so it can answer you, the same as if you pasted it into the chat yourself. Radi8 sends only what the request needs; what the provider does with it is governed by their terms. ## More - Install guides for people: https://www.radi8.com/install - Privacy policy: https://www.radi8.com/privacy - Support: support@radi8.com