> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mob.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect your agent

> Wire a Discord server or Slack workspace into your own AI agent as a member.

mob is an MCP connector. Once the owner of your community has installed the
mob app, you can bring that community's context into any agent that speaks
MCP: Claude, ChatGPT, Cursor, Claude Code, and others.

## Connecting

Two starting points reach the same account, so pick whichever is in front
of you.

**Start from your agent.** Add mob to your client using the instructions
below; everything speaks to the same endpoint, `https://mob.so/mcp`. When
your client opens the authorization page, sign in with the Discord or Slack
account you use in your community.

* A Discord sign-in connects every server you belong to where mob is
  installed.
* A Slack sign-in connects the workspace you authorize. Slack search runs
  on an authorization you give per workspace, so each additional workspace
  is one more sign-in.

The consent screen names the client requesting access and the communities
it will reach.

**Start from your community.** Run `/mob connect` inside the Discord server
or Slack workspace. The command replies with a personal setup link that
walks through the same sign-in and client setup.

One account can link several communities. Your agent calls `list_servers`
to see them and uses the returned ids with the other tools. A Discord
server you join later is picked up on your agent's next `list_servers`
call, or by running `/mob connect` there.

Members of a self-hosted instance use that instance's own URL
(`https://<instance-domain>/mcp`) in step 3; everything else is identical.

## Client instructions

Any MCP client works: the endpoint is plain streamable HTTP with OAuth, so
wherever your client accepts a remote MCP server URL, paste
`https://mob.so/mcp`. The entries below are the exact paths for the common
ones.

**Claude** (web and desktop): Settings, then Connectors, then add a custom
connector with the URL `https://mob.so/mcp`.

**Claude Code**:

```bash theme={null}
claude mcp add --transport http mob https://mob.so/mcp
```

Or install the mob plugin, which bundles the server with a skill that
teaches the agent the tool workflow and posting etiquette:

```bash theme={null}
claude plugin marketplace add promptrotator/mob.so
claude plugin install mob
```

**ChatGPT**: enable developer mode in settings, then add `https://mob.so/mcp`
as a connector.

**Codex**:

```bash theme={null}
codex mcp add mob --url https://mob.so/mcp
```

**Cursor**: click the install button, or add the server under Settings, MCP.

[![Add mob to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=mob\&config=eyJ1cmwiOiJodHRwczovL21vYi5zby9tY3AifQ==)

```json theme={null}
{
  "mcpServers": {
    "mob": { "url": "https://mob.so/mcp" }
  }
}
```

**Gemini CLI**:

```bash theme={null}
gemini mcp add --transport http mob https://mob.so/mcp
```

Then run `/mcp auth mob` inside Gemini CLI to sign in.

## The tools

| Tool            | What it does                                                                                                                    |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `list_servers`  | Lists the communities your account can use, with your role in each.                                                             |
| `search`        | Searches messages in one community, including indexed attachment and file contents. Results only include channels you can read. |
| `read_channel`  | Reads the most recent messages from one channel, newest first, along with who is typing in the channel right now.               |
| `post_message`  | Posts into a channel where the owner enabled agent posting, sent by the mob app with visible attribution to you.                |
| `add_reaction`  | Adds a standard emoji reaction as the mob app. The platform does not show which account holder requested it.                    |
| `signal_typing` | Shows the channel that your agent is composing a message. On Discord this appears as the app's typing indicator.                |

## What governs reads and writes

Reads never exceed your own access:

* On Discord, mob searches a local mirror of what the installed bot can
  see and filters the results through your current channel permissions.
* On Slack, each query goes to Slack's own search with your OAuth token,
  so Slack applies your workspace access directly.

Agent writing is off everywhere on a fresh install. Before a post or
reaction lands:

* the owner must have enabled writing in that channel
* mob checks your own permission and current platform state
* the write counts against the member and community write limits
* when the owner enabled the security guard, the post's text is screened
  against the community's policy

A denial names the reason and any retry delay, so your agent can rephrase
or wait.

The full model, including how identities and grants resolve, is in
[Authorization](/authorization).
