npm package: @sidearmdrm/mcp
Description: MCP server exposing Sidearm media protection tools — watermarking, AI detection, and similarity search for AI agents
Author: Sidearm
Latest version: 0.9.2

# @sidearmdrm/mcp

MCP server for the [Sidearm API](https://sdrm.io) — protect media from AI training, detect AI-generated content, and search for stolen work.

This package exposes the Sidearm REST API as [Model Context Protocol](https://modelcontextprotocol.io) (MCP) tools that AI agents (Cursor, Claude Desktop, Windsurf, etc.) can call directly.

## Quick Start

### 1. Get an API key

Sign up at [sdrm.io](https://sdrm.io) and create an API key at [sdrm.io/api-keys](https://sdrm.io/api-keys).

### 2. Configure your agent

Add to your MCP configuration file:

**Cursor** (`.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "sdrm": {
      "command": "npx",
      "args": ["-y", "@sidearmdrm/mcp"],
      "env": {
        "SDRM_API_KEY": "sk_live_..."
      }
    }
  }
}
```

**Claude Desktop** (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "sdrm": {
      "command": "npx",
      "args": ["-y", "@sidearmdrm/mcp"],
      "env": {
        "SDRM_API_KEY": "sk_live_..."
      }
    }
  }
}
```

**Windsurf** (`~/.codeium/windsurf/mcp_config.json`):

```json
{
  "mcpServers": {
    "sdrm": {
      "command": "npx",
      "args": ["-y", "@sidearmdrm/mcp"],
      "env": {
        "SDRM_API_KEY": "sk_live_..."
      }
    }
  }
}
```

That's it. Your agent can now call Sidearm tools.

## Tools (27)

### Discovery

| Tool | Description |
|------|-------------|
| `list_algorithms` | Browse available protection algorithms. Filter by category or media type. |

### Protection & Extraction

| Tool | Description |
|------|-------------|
| `run_algorithm` | Run specific algorithms on media by ID. Returns a job for async processing. |
| `protect_media` | Protect media with a preset level (standard/maximum). Auto-selects algorithms. |
| `extract_embeddings` | Extract raw embedding vectors from media for downstream similarity search or ML pipelines. |

### Jobs

| Tool | Description |
|------|-------------|
| `check_job` | Poll async job status. Returns progress and results when complete. |

### Detection

| Tool | Description |
|------|-------------|
| `detect_ai` | Detect whether media was AI-generated. Supports image, video, audio, text. |
| `detect_fingerprint` | Check if media has been previously registered using fingerprint matching. |
| `detect_membership` | Test whether your content was used to train a suspect AI model. |

### Search

| Tool | Description |
|------|-------------|
| `search_media` | Search for similar media across your indexed library. |
| `list_searches` | List previous searches on your account. |

### Media Management

| Tool | Description |
|------|-------------|
| `register_media` | Register and index media with optional protection mode (register, search_ready, standard, maximum). |
| `list_media` | List media assets in your library (paginated, filterable). |
| `get_media` | Get details of a specific media asset including protection status and algorithms applied. |
| `update_media` | Update media metadata (e.g., original URL). |
| `delete_media` | Permanently delete a media asset and all associated data. |

### Account, Rights & Billing

| Tool | Description |
|------|-------------|
| `get_account` | Get your account details — ID, name, email, credit balance, and plan info. |
| `get_rights` | Get C2PA, IPTC, and rights information for a media asset. |
| `get_billing` | View credit balance, usage breakdown, per-algorithm costs, and billing portal link. |

### Provenance & Identification

| Tool | Description |
|------|-------------|
| `get_provenance` | Get the full provenance chain for an asset — algorithms, C2PA manifest, membership results. |
| `identify_media` | Identify media by its embedded Sidearm fingerprint and extract its C2PA provenance chain. |

### Shares

| Tool | Description |
|------|-------------|
| `create_share` | Create a shareable link for a detection, search, or provenance result (starts private). |
| `get_share` | Get a shared result by its share ID. |
| `publish_share` | Make a shared result publicly accessible. |

### Deletion Records

| Tool | Description |
|------|-------------|
| `list_deletions` | List deletion records documenting permanently deleted assets. |
| `get_deletion` | Get details of a specific deletion record including purged algorithms and storage status. |

### Documentation

| Tool | Description |
|------|-------------|
| `search_docs` | Search the Sidearm API documentation. Returns relevant sections from the full developer reference. |
| `navigate_ui` | Look up how to perform actions in the Sidearm dashboard. Returns step-by-step instructions. |

## Example Agent Conversations

> "Protect this image from AI training"
>
> Agent calls `protect_media` with the image URL, then `check_job` to get the protected file.

> "What algorithms are available for audio?"
>
> Agent calls `list_algorithms` with `media_type: "audio"`.

> "Run Nightshade and Glaze on my artwork"
>
> Agent calls `run_algorithm` with `algorithms: ["nightshade", "glaze"]`.

> "Is this photo AI-generated?"
>
> Agent calls `detect_ai` with the image, then `check_job` for results.

> "Was my artwork used to train Stable Diffusion?"
>
> Agent calls `detect_membership` with your media IDs and the model name.

> "How do I upload files in the dashboard?"
>
> Agent calls `navigate_ui` with `query: "upload files"` for step-by-step instructions.

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `SDRM_API_KEY` | Yes | Your Sidearm API key (`sk_live_...` or `sk_test_...`) |
| `SDRM_BASE_URL` | No | Override the API base URL (default: `https://api.sdrm.io`) |

## Development

```bash
git clone https://github.com/sidearmDRM/mcp-server.git
cd mcp-server
npm install
npm run build
```

Test locally with the [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector):

```bash
SDRM_API_KEY=sk_test_... npx @modelcontextprotocol/inspector node dist/index.js
```

## License

MIT