Developers

Connect AI assistants (MCP)

Each organization has its own Model Context Protocol endpoint. Connect it to an assistant and it can list, create and update your links, read analytics and follow changes, always within the permissions you grant.

Your endpoint

https://c1k.me/mcp/{org_id}, shown with your organization ID on the Integrations page. It speaks Streamable HTTP with protocol version 2025-11-25: one JSON-RPC message per request, no long-lived stream, no session.

Two ways to grant access

MCP token

For assistants that let you set a header: Claude Code, Cursor, VS Code, JetBrains IDEs, Codex and Gemini CLI. In Integrations create a key Used for: MCP and pick its scopes. It acts for the organization, not for a person, and you revoke it on the same page.

OAuth sign-in

For connectors that sign you in through the browser: Claude and ChatGPT. You approve the access on c1k.me for one organization and the scopes shown. C1K accepts only preregistered applications, so the platform owner first registers the connector under Platform, OAuth clients. You revoke it under Account, Connected applications.

Setup by client

ClientAccessStatus
Claude Code 2.1.269TokenTested in the release pipeline: the command below, then claude mcp list reports C1K as connected.
Official MCP TypeScript SDK 1.30Token and OAuthTested in the release pipeline: connection, tool list, a link created with its output checked against the tool schema, and the full OAuth flow.
Claude (web and desktop)OAuthConfiguration from the client's documentation.
ChatGPTOAuthConfiguration from the client's documentation.
CursorTokenConfiguration from the client's documentation.
VS CodeTokenConfiguration from the client's documentation.
JetBrains IDEsTokenConfiguration from the client's documentation.
Codex CLITokenConfiguration from the client's documentation.
Gemini CLI 0.59.0TokenTested in the release pipeline: the commands below in a trusted folder, then gemini mcp list reports C1K as connected.

In every snippet, replace org_... with your organization ID and keep the token in the environment variable C1K_MCP_TOKEN. Other MCP clients work if they support Streamable HTTP with protocol 2025-11-25 or 2025-06-18 and either a custom Authorization header or OAuth with a preregistered client ID.

Claude Code

Add the server once, then check that it connects:

Terminal
claude mcp add --transport http c1k https://c1k.me/mcp/org_... \
  --header "Authorization: Bearer $C1K_MCP_TOKEN"
claude mcp list

Add --scope user to use it in every project. Then ask, for example: Create a C1K link to https://venture.example/launch with the slug launch26.

Claude (claude.ai and Claude Desktop)

  1. The platform owner registers the connector once: Platform, OAuth clients, name Claude, type Public (PKCE only), redirect URLs https://claude.ai/api/mcp/auth_callback and https://claude.com/api/mcp/auth_callback. Its client ID then appears on every organization's Integrations page.
  2. In Claude open Settings, Connectors, Add custom connector. Name it C1K and use your endpoint as the URL.
  3. Under Advanced settings enter the client ID and leave the secret empty.
  4. Choose Connect. Sign in on c1k.me, check the organization and scopes, and allow access.

ChatGPT

  1. The platform owner registers the connector: Platform, OAuth clients, name ChatGPT, type Public (PKCE only), redirect URL https://chatgpt.com/connector_platform_oauth_redirect. Its client ID then appears on every organization's Integrations page.
  2. In ChatGPT turn on developer mode under Settings, Apps and connectors, Advanced settings, then create a connector with your endpoint as the MCP server URL and OAuth as the authentication.
  3. When ChatGPT asks for OAuth client details, enter the client ID and no secret. C1K does not offer dynamic client registration.
  4. Sign in on c1k.me and allow access.

Cursor

In ~/.cursor/mcp.json for all projects, or .cursor/mcp.json in one project:

mcp.json
{
  "mcpServers": {
    "c1k": {
      "url": "https://c1k.me/mcp/org_...",
      "headers": { "Authorization": "Bearer ${env:C1K_MCP_TOKEN}" }
    }
  }
}

VS Code (agent mode)

In .vscode/mcp.json. VS Code asks for the token once and stores it securely:

mcp.json
{
  "inputs": [
    { "type": "promptString", "id": "c1k-token", "description": "C1K MCP token", "password": true }
  ],
  "servers": {
    "c1k": {
      "type": "http",
      "url": "https://c1k.me/mcp/org_...",
      "headers": { "Authorization": "Bearer ${input:c1k-token}" }
    }
  }
}

JetBrains IDEs (AI Assistant and Junie)

IntelliJ IDEA, PyCharm, WebStorm, PhpStorm, GoLand, Rider and the other JetBrains IDEs share one setup. For AI Assistant open Settings, Tools, AI Assistant, Model Context Protocol (MCP), add a server and paste the configuration as JSON. For Junie use Settings, Tools, Junie, MCP Settings, or the file .junie/mcp/mcp.json in the project.

MCP configuration (JSON)
{
  "mcpServers": {
    "c1k": {
      "url": "https://c1k.me/mcp/org_...",
      "headers": { "Authorization": "Bearer c1k_mcp_..." }
    }
  }
}

IDE versions that only start local (stdio) servers can reach C1K through the mcp-remote bridge, which needs Node.js:

MCP configuration (JSON), through mcp-remote
{
  "mcpServers": {
    "c1k": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://c1k.me/mcp/org_...", "--header", "Authorization:${C1K_AUTH}"],
      "env": { "C1K_AUTH": "Bearer c1k_mcp_..." }
    }
  }
}

The IDE stores this configuration in its settings, so paste the token itself there and treat the settings like a password store.

Codex CLI

In ~/.codex/config.toml; Codex reads the token from the named environment variable:

config.toml
[mcp_servers.c1k]
url = "https://c1k.me/mcp/org_..."
bearer_token_env_var = "C1K_MCP_TOKEN"

Gemini CLI

Add the server, then check it. Gemini CLI starts MCP servers only in folders you trust, so run it in your project folder and trust the folder when it asks.

Terminal
gemini mcp add --scope user --transport http c1k https://c1k.me/mcp/org_... \
  --header "Authorization: Bearer $C1K_MCP_TOKEN"
gemini mcp list

The command writes this entry to ~/.gemini/settings.json, which you can also edit by hand:

settings.json
{
  "mcpServers": {
    "c1k": {
      "httpUrl": "https://c1k.me/mcp/org_...",
      "headers": { "Authorization": "Bearer $C1K_MCP_TOKEN" }
    }
  }
}

Tools

An assistant sees only the tools its token or sign-in allows.

ToolScopeWhat it does
get_capabilitiesanyThe organization, the token's scopes, available tools and the link quota.
list_links, get_link, get_qrlinks:readSearch and read links; SVG QR codes.
create_linklinks:writeCreate a link. Needs an idempotency_key, so a retry never makes a duplicate.
update_link, archive_linklinks:writeChange, pause, reactivate or archive; needs the current expected_version.
delete_linklinks:deleteErase a link; needs confirm set to true and the exact link ID.
get_analytics, get_link_analyticsanalytics:readRecorded requests per day, dimensions and unique estimates.
list_eventsevents:readRecent changes after a cursor.

Good to know

Troubleshooting

SymptomCause and fix
401 with invalid_tokenThe token was revoked or expired, or belongs to another organization. Check the ID in the URL and create a new token.
400 unsupported MCP-Protocol-VersionThe client uses a protocol older than 2025-06-18. Update it.
A tool is missingThe token lacks its scope. Create a token with that scope; scopes of an existing token cannot change.
Gemini CLI lists C1K as disabledThe current folder is not trusted. Trust it when Gemini asks, or run Gemini in a trusted project folder.
OAuth sign-in says the application is unknownThe connector is not registered, or its redirect URL differs. The platform owner registers it with the exact URL shown above.
429Too many requests. The client may retry after the number of seconds in Retry-After.