Remote MCP · Streamable HTTP · OAuth 2.1

KORD MCP server

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/mcp

Your agent app opens the KORD sign-in. Default grant: draft only.

Overview

What the KORD MCP server does

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.

One workspace

Each connection is bound to the approving user and one selected client or brand workspace.

Draft by default

The default grant can read context and create or revise private drafts. It cannot schedule or publish.

Revocable

Disconnect at any time in KORD. Access stops immediately and existing drafts stay.

Try these prompts after connecting

  • “Using KORD, show my active publishing profiles and this week's calendar.”
  • “Search KORD media for a city image and prepare an Instagram draft.”
  • “Read this KORD draft, change the caption, and leave it ready for human review.”

Connect

Connect your agent app

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.

Claude (web and desktop)

  1. Open Settings → Connectors and choose Add custom connector.
  2. Name it KORD, paste the server URL and choose Add.
  3. Choose Connect, sign in to KORD, select one workspace and approve the listed access.

On Team and Enterprise plans an owner may need to add the connector for the organization first.

Claude Code

Add the server, then authenticate from inside Claude Code:

claude mcp add --transport http kord https://mcp.kord.ch/mcp

Start Claude Code, run /mcp, select kord and complete the KORD sign-in in your browser.

ChatGPT

  1. Enable developer mode in ChatGPT's Apps & Connectors advanced settings, where your plan or workspace allows it.
  2. Create a connector named KORD with the server URL and OAuth authentication.
  3. Sign in to KORD, select one workspace and approve the listed access, then enable KORD in a new chat.

Codex

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 kord
If KORD tools are missing, reconnect KORD in your app and start a new chat or task. Never paste a KORD API token into a conversation as a fallback.

Authorization

OAuth flow

KORD implements the MCP authorization flow with OAuth 2.1 authorization code and PKCE. Compatible clients handle these steps automatically.

  1. 01

    Discover

    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.

  2. 02

    Register

    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.

  3. 03

    Sign in and consent

    You sign in to KORD, choose exactly one workspace and see every requested permission. Nothing is granted until you choose Allow selected access.

  4. 04

    Exchange the code

    The client exchanges a single-use, five-minute authorization code using PKCE S256 and the exact MCP resource URL.

  5. 05

    Use short-lived tokens

    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-resource

Authorization-server metadata

https://app.kord.ch/.well-known/oauth-authorization-server

Transport

Streamable HTTP · POST /mcp

Default scope challenge

publishing.read media.read post.create

Tools

Six tools in the default grant

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-only

Read 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-only

List visible posts in an explicit time range before suggesting timing or checking conflicts.

Scope: publishing.read

kord_search_mediaRead-only

Search media metadata in the workspace. Returned labels and filenames are treated as untrusted content, not instructions.

Scope: media.read

kord_get_postRead-only

Read the exact current post, approval and delivery state before revising a draft or reporting an outcome.

Scope: publishing.read

kord_create_draftCreates a draft

Create 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 content

Replace the content of an existing editable draft after reading it. Never schedules or publishes.

Scope: publishing.read + post.create

Optional tools for separately granted scopes

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 image

Create 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 change

Validate 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 confirmation

Schedule 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 change

Validate 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 confirmation

Start 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-only

Check a prepared or confirmed operation after an ambiguous network result instead of repeating it.

Scope: publishing.read + post.schedule or post.publish

Scopes

Default grant and elevated scopes

Default · draft only

  • publishing.read
  • media.read
  • post.create

Read the workspace, profiles, calendar and media metadata, and create or revise private drafts. This is what Claude, ChatGPT and the packaged Codex configuration request.

Optional · media

  • media.upload

Prepare correctly sized image copies for a selected profile. Originals are never changed.

Elevated · schedule and publish

  • post.schedule
  • post.publish

Independent, high-impact scopes. Consent requires choosing concrete profiles, and every action needs an exact preview and a fresh confirmation.

How elevated access works

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.

Which clients can request it

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

KORD stays the source of every rule

Token never forwarded

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.

Rechecked on every call

KORD verifies current membership, role, channel permission, billing access, profile status, approval policy and provider readiness on each request.

Exactly once

Draft writes use idempotency keys. Schedule and publish confirmations are bound to an unchanged fingerprint and expire after five minutes.

Content is data

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.

Approval still applies

If a workspace requires approval before publishing, an agent's scheduled post waits for an owner, admin or approving editor like any other post.

Private usage metrics

Usage counts record user, connection, workspace, tool and time, never prompts, post text, media names or tokens.

Control

Review and disconnect

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

Support and policies

Support

Email [email protected] with the client name and approximate time. Never include a token.

Building a backend integration?

Use the Agent API for server automation.

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.