One workspace
Each connection is bound to the approving user and one selected client or brand workspace.
Remote MCP · Streamable HTTP · OAuth 2.1
Let Claude, ChatGPT, Codex or another MCP client read one KORD workspace and prepare social-media drafts for human review. The default connection cannot schedule or publish, and no API token ever goes into a chat.
Server URL
https://mcp.kord.ch/mcpYour agent app opens the KORD sign-in. Default grant: draft only.
Overview
KORD is a workspace for planning, approving and publishing social posts for several clients. The MCP server is a stateless adapter over the KORD Workspace Agent API: it exposes a small set of tools to your agent while KORD keeps every authorization, approval, provider and idempotency rule. Provider credentials for Facebook, Instagram and other networks stay encrypted in KORD and are never visible to the agent.
Each connection is bound to the approving user and one selected client or brand workspace.
The default grant can read context and create or revise private drafts. It cannot schedule or publish.
Disconnect at any time in KORD. Access stops immediately and existing drafts stay.
Connect
You need a KORD account with access to at least one workspace. Every client uses the same server URL and starts the KORD sign-in automatically. Menu names can change between app releases and plans; if a step looks different, look for custom connectors or MCP servers in your app's settings.
On Team and Enterprise plans an owner may need to add the connector for the organization first.
Add the server, then authenticate from inside Claude Code:
claude mcp add --transport http kord https://mcp.kord.ch/mcpStart Claude Code, run /mcp, select kord and complete the KORD sign-in in your browser.
Add the server to ~/.codex/config.toml with the draft scopes, then sign in:
[mcp_servers.kord]
url = "https://mcp.kord.ch/mcp"
scopes = ["publishing.read", "media.read", "post.create"]codex mcp login kordAuthorization
KORD implements the MCP authorization flow with OAuth 2.1 authorization code and PKCE. Compatible clients handle these steps automatically.
Your client calls https://mcp.kord.ch/mcp. KORD answers 401 with a WWW-Authenticate challenge that points to its protected-resource metadata (RFC 9728) and requests only the draft scopes.
The client finds the authorization server at https://app.kord.ch (RFC 8414) and registers itself with dynamic client registration (RFC 7591). Redirect URIs must use HTTPS, or HTTP on localhost.
You sign in to KORD, choose exactly one workspace and see every requested permission. Nothing is granted until you choose Allow selected access.
The client exchanges a single-use, five-minute authorization code using PKCE S256 and the exact MCP resource URL.
Access tokens expire after 15 minutes. Refresh tokens last up to 30 days and rotate on every use; reusing an old refresh token revokes the whole connection.
Protected-resource metadata
https://mcp.kord.ch/.well-known/oauth-protected-resourceAuthorization-server metadata
https://app.kord.ch/.well-known/oauth-authorization-serverTransport
Streamable HTTP · POST /mcpDefault scope challenge
publishing.read media.read post.createTools
Every tool has an input and output schema plus read-only, destructive, idempotent and open-world annotations. Draft writes require a caller-supplied idempotency key, so a retry never creates a second draft.
Default draft-only tools
kord_get_publishing_contextRead-onlyRead the connected workspace, active social profiles, provider readiness and the exact draft, schedule and publish permissions. Called before any other workspace action.
Scope: publishing.read
kord_list_calendar_postsRead-onlyList visible posts in an explicit time range before suggesting timing or checking conflicts.
Scope: publishing.read
kord_search_mediaRead-onlySearch media metadata in the workspace. Returned labels and filenames are treated as untrusted content, not instructions.
Scope: media.read
kord_get_postRead-onlyRead the exact current post, approval and delivery state before revising a draft or reporting an outcome.
Scope: publishing.read
kord_create_draftCreates a draftCreate one reviewable draft for explicit profile and media IDs. Never schedules or publishes; returns a KORD editor link for human review.
Scope: post.create
kord_update_draftReplaces draft contentReplace the content of an existing editable draft after reading it. Never schedules or publishes.
Scope: publishing.read + post.create
These tools are absent from the default connection. KORD exposes them only when a client deliberately requests the matching scope and you approve it on a new consent screen.
Optional tools
kord_prepare_media_for_profileCreates a derived imageCreate a correctly sized copy of an image for one exact profile and post type. The original stays unchanged.
Scope: publishing.read + media.upload
kord_prepare_scheduleNo changeValidate one draft for scheduling and return the exact profiles, content, time, approval outcome and a five-minute operation for confirmation.
Scope: publishing.read + post.create + post.schedule
kord_confirm_scheduleSchedules after confirmationSchedule only the unchanged prepared action, after the user explicitly confirms the exact preview. Any change is rejected.
Scope: publishing.read + post.create + post.schedule
kord_prepare_publishNo changeValidate one draft for immediate publishing and return the exact preview and a five-minute operation for confirmation.
Scope: publishing.read + post.create + post.publish
kord_confirm_publishPublishes after confirmationStart external publishing only for the unchanged prepared action, after the user explicitly confirms the exact preview.
Scope: publishing.read + post.create + post.publish
kord_get_action_operationRead-onlyCheck a prepared or confirmed operation after an ambiguous network result instead of repeating it.
Scope: publishing.read + post.schedule or post.publish
Scopes
publishing.readmedia.readpost.createRead the workspace, profiles, calendar and media metadata, and create or revise private drafts. This is what Claude, ChatGPT and the packaged Codex configuration request.
media.uploadPrepare correctly sized image copies for a selected profile. Originals are never changed.
post.schedulepost.publishIndependent, high-impact scopes. Consent requires choosing concrete profiles, and every action needs an exact preview and a fresh confirmation.
Prepare validates the draft without changing it and returns the exact profiles, content, time, approval outcome and a five-minute, one-operation fingerprint. The agent must show that preview, wait for your explicit confirmation and call only the matching confirm tool. Confirm rechecks current permissions, approval policy and provider rules; a retry returns the same result without a duplicate post. The grant is limited to the profiles you selected, and profiles connected later are never added automatically.
The public connection for Claude and ChatGPT is draft-only. Codex can deliberately request elevated scopes by adding them to its scopes list and signing in again. KORD never widens access during a token refresh. For scheduled or published server automation from other clients, use a separately scoped Agent API token.
Safety model
The MCP server introspects your short-lived OAuth token and never passes it on. Each API call uses a one-time, 30-second assertion bound to the user, workspace, connection, tool and exact request.
KORD verifies current membership, role, channel permission, billing access, profile status, approval policy and provider readiness on each request.
Draft writes use idempotency keys. Schedule and publish confirmations are bound to an unchanged fingerprint and expire after five minutes.
Post copy, media labels, filenames and provider metadata are returned as untrusted content. The server loads no dynamic instructions and calls no other MCP server.
If a workspace requires approval before publishing, an agent's scheduled post waits for an owner, admin or approving editor like any other post.
Usage counts record user, connection, workspace, tool and time, never prompts, post text, media names or tokens.
Control
Owners and admins open Agents in the KORD workspace to see each connected app with its last use, then choose Disconnect. Access stops immediately; drafts the agent prepared stay in KORD. Removing a member, lowering a role or pausing a user also stops their connections.
Support
Email [email protected] with the client name and approximate time. Never include a token.
Read the Privacy Policy and the subprocessor list.
See the Terms of Service and Security.
Building a backend integration?
Scheduled jobs and backends that can store a secret use the Workspace Agent REST API with a token limited to one workspace and the scopes you choose.