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

# MCP server

> Connect Claude, Cursor, ChatGPT and other AI agents to your Moderation API account with the hosted MCP server.

The Moderation API MCP server lets an AI agent work with your account: go through review queues, look up authors, change policies and wordlists, read analytics and more. It is hosted at:

```
https://mcp.moderationapi.com/mcp
```

The server has one tool for each endpoint of the [REST API](https://docs.moderationapi.com/api-reference/introduction.md). To add moderation to the code of your app, use the [setup skill](https://docs.moderationapi.com/ai/skill.md) instead.

## Connect your agent

**Claude Code**

```bash theme={"theme":"nord"}
claude mcp add --transport http moderation-api https://mcp.moderationapi.com/mcp
```

Or install the [plugin](https://docs.moderationapi.com/ai/overview.md#start-here), which adds the MCP server and the setup skill together.

**Claude and Claude Desktop**

Open **Settings → Connectors → Add custom connector**, and enter `https://mcp.moderationapi.com/mcp`.

**Cursor**

Add the server to `.cursor/mcp.json` in your project, or to `~/.cursor/mcp.json` for all projects:

```json theme={"theme":"nord"}
{
  "mcpServers": {
    "moderation-api": {
      "url": "https://mcp.moderationapi.com/mcp"
    }
  }
}
```

**Other clients**

Add a remote MCP server with the URL `https://mcp.moderationapi.com/mcp` and the Streamable HTTP transport.

## Sign in

The first time the agent uses the server, your browser opens:

1. Sign in with your Moderation API account.
2. Pick the organization the agent can use.
3. Approve the connection.

You need the **Owner**, **Admin** or **Developer** role in the organization. The agent can reach the projects that you can reach.

Each connection gets its own API key. It shows on the **API keys** page, named after the app and your email. Delete the key to end the connection.

When the agent resolves queue items or runs actions, the review queue shows you as the reviewer.

### Without a browser

Agents that cannot open a browser, for example in CI, can send an API key instead:

```bash theme={"theme":"nord"}
claude mcp add --transport http moderation-api https://mcp.moderationapi.com/mcp \
  --header "Authorization: Bearer $MODAPI_SECRET_KEY"
```

A project key reaches one project. An organization key reaches the projects you allow it to. See [Authentication](https://docs.moderationapi.com/api-reference/authentication.md).

## Projects

Tools that work on content in a project take an optional `projectId`. You can give the project ID or its name. When the agent leaves it out and the key reaches more than one project, the tool returns the projects to choose from.

## What the tools can do

| Area | Tools |
| - | - |
| Content | Submit content and read the result, with or without storing it |
| Review queues | List queues, list items, resolve and unresolve items, one by one or up to 100 at a time, queue statistics |
| Authors | List, look up, create and update authors |
| Actions | List and run moderation actions on content and authors, create and change actions |
| Policies | Read and change channels and their policies, create and change wordlists |
| Analytics | Summary, most flagged policies and authors, numbers per channel, volumes over time, automation |
| Projects | List, create, change and duplicate projects |
| Webhooks | List, create and change webhooks |
| Feedback | Send a feature request to the Moderation API team |

Tools that only read data are marked as read-only, so your agent can run them without asking you. Tools that change or delete data are marked as such, and most agents ask you before they run them.

See [What your agent can do](https://docs.moderationapi.com/ai/examples.md) for prompts to start with.

## Limits

The MCP server calls the same API as your code. [Rate limits](https://docs.moderationapi.com/api-reference/rate-limits.md), quotas and request logs work the same way.
