For Claude Code users

One Claude Code.
Every account from every job.

Most MCP servers sign in to one account — work two jobs and you juggle two Slacks, two Jiras, extra servers and constant re-logins. Goptin puts every account you've connected behind one MCP server and one token: Claude Code picks the right account by name.

Typical MCP
  • 1 server = 1 account
  • 2 Slack workspaces = 2 servers, 2 logins
  • One MCP per tool, scattered config
Goptin MCP
  • 1 token for every connected account
  • Slack, Teams, Jira, ClickUp, Google Chat… in one place
  • Address accounts by name: “Slack job A”, “Jira job B”
  • Read and search messages across every channel, scoped per account.
  • Pull your own Jira / ClickUp tickets, with their comments.
  • Reply from the conversation's own account — Claude Code always asks before sending.
T→ 1 MCP
claude — 2 jobs, 1 session
> Summarize my open tickets in Jira job A, then tell the team on Slack job B I'll review this afternoon
goptin · list_accounts → 2 Slack · 2 Jira · 1 Teams
goptin · list_tickets(account: "Jira job A") → 3 open tickets
goptin · send_message(account: "Slack job B") — awaiting your approval
Job A has 3 open tickets, 1 in review. Drafted a note for #dev on Slack job B — send it?
Add it to Claude Code with one command
claude mcp add --transport http goptin https://app.goptin.com/mcp --header "Authorization: Bearer gpt_…"

Open MCP standard — also works with Cursor, VS Code (Copilot), Windsurf, Codex CLI, Gemini CLI and Claude Desktop. Ready-made configs for each in Settings → Integrations.

Get a token in Settings → Integrations →Tool list, per-client setup and FAQ →

The tools your agent gets

Every tool takes an optional account — a name fragment like  "slack job b" or an account id.

list_accounts

List every account the user has connected to Goptin (several per channel is normal). Call this first to pick the right account.

list_conversations

List recent inbox conversations (DMs, groups, channels, ticket threads), newest first, across all or one account.

read_conversation

Read the messages of one conversation, oldest first. Use `before` with the earliest sent_at to page back.

search_messages

Full-text search over stored messages across all or one account.

send_message

Send a message as the user into an existing conversation, through the account that conversation belongs to. This really delivers to the other person — confirm the text with the user first.

list_tickets

List the user's own tickets live from Jira / ClickUp, grouped by the provider's statuses (open ones by default).

get_ticket

Get one ticket's live details plus its comment thread. Takes the conversation_id from list_tickets.

Set it up in two minutes

  1. Start the free trial and connect your accounts in Goptin.
  2. Create a token in Settings → Integrations.
  3. Add the server to your client:
Claude Code
claude mcp add --transport http goptin https://app.goptin.com/mcp --scope user --header "Authorization: Bearer gpt_…"
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "goptin": {
      "url": "https://app.goptin.com/mcp",
      "headers": {
        "Authorization": "Bearer gpt_…"
      }
    }
  }
}
VS Code (Copilot)
.vscode/mcp.json
{
  "servers": {
    "goptin": {
      "type": "http",
      "url": "https://app.goptin.com/mcp",
      "headers": {
        "Authorization": "Bearer gpt_…"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "goptin": {
      "serverUrl": "https://app.goptin.com/mcp",
      "headers": {
        "Authorization": "Bearer gpt_…"
      }
    }
  }
}
Codex CLI
~/.codex/config.toml
[mcp_servers.goptin]
url = "https://app.goptin.com/mcp"
http_headers = { "Authorization" = "Bearer gpt_…" }
Gemini CLI
~/.gemini/settings.json
{
  "mcpServers": {
    "goptin": {
      "httpUrl": "https://app.goptin.com/mcp",
      "headers": {
        "Authorization": "Bearer gpt_…"
      }
    }
  }
}
Claude Desktop
claude_desktop_config.json
{
  "mcpServers": {
    "goptin": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://app.goptin.com/mcp",
        "--header",
        "Authorization:${GOPTIN_AUTH}"
      ],
      "env": {
        "GOPTIN_AUTH": "Bearer gpt_…"
      }
    }
  }
}

FAQ

Can Claude Code connect to more than one Slack workspace?

A typical Slack MCP server signs in to a single workspace, so a second job means a second server and a second login. Goptin connects every workspace you add in the app and exposes all of them through one MCP server; Claude Code picks the account by name ("Slack job B").

Which accounts and tools are supported?

Slack, Microsoft Teams, Google Chat, Jira and ClickUp today — several accounts per channel. Facebook Messenger and Instagram are in testing; Zalo, Gmail and WhatsApp are next.

Will the agent send messages without asking?

send_message really delivers to the other person, so the server tells the model to show you the exact text first, and Claude Code asks for permission before every tool call that sends.

Does it work outside Claude Code?

Yes. It is a standard Streamable HTTP MCP server with a bearer token, so Cursor, VS Code (Copilot), Windsurf, Codex CLI and Gemini CLI connect directly; Claude Desktop connects through mcp-remote.

How is access secured?

Each personal token is shown once, stored only as a SHA-256 hash, and can be revoked at any time in Settings → Integrations. Channel credentials are encrypted with AES-256-GCM.

How much does it cost?

The MCP server is included in every Goptin plan, including the 14-day free trial — no card needed.

Start free — 14 days, no card →