io.github.ebadros/sidearm
Protect media from AI training, detect AI-generated content, and find stolen work.
Open source Open in the app JSON README (API)
About
Protect media from AI training, detect AI-generated content, and find stolen work.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- ebadros
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.9.2
- Last push
- 2026-03-11T16:32:42Z
- Repository state
- ativo
- Language
- TypeScript
- License
- MIT
- Added
- 2026-08-29 03:02:44
- Updated
- 2026-08-29 03:02:44
- Origin id
io.github.ebadros/sidearm
README
# @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