sidearmdrm avatar

Sidearm

sidearmdrm/mcp-server

Connects Claude and other MCP clients to the Sidearm API for content protection and AI detection. Exposes 27 tools covering media registration, running protection algorithms like Nightshade and Glaze, detecting AI-generated content across images/video/audio/text, membership inference testing to check if your work trained a model, and fingerprint-based search for stolen content. Handles async job polling, C2PA provenance chains, and account management. Useful when you're building workflows around protecting creative work from scraping, verifying content authenticity, or tracking unauthorized use. Requires a Sidearm API key and runs via npx in Cursor, Claude Desktop, or Windsurf configurations.

tools
19
auth
Secret needed
transport
STDIO
env vars
2
last updated
Mar 11, 2026

Tools

19 tools

Public tool metadata for what this MCP can expose to an agent.

list_algorithmsList available algorithms for media protection, watermarking, and AI content disruption. Returns algorithm IDs, names, supported media types, and descriptions. Use this to discover valid algorithm IDs before calling run_algorithm. Filter by category (open = research algorithms...2 params

List available algorithms for media protection, watermarking, and AI content disruption. Returns algorithm IDs, names, supported media types, and descriptions. Use this to discover valid algorithm IDs before calling run_algorithm. Filter by category (open = research algorithms...

Parameters* required
categorystring
Filter by algorithm categoryone of open · proprietary
media_typestring
Filter by supported media typeone of image · video · audio · text · pdf · gif
run_algorithmRun one or more named algorithms on media. Provide algorithm IDs (from list_algorithms) and either a public media_url or base64-encoded media content. For text, use the text param. Returns a job_id for async processing — use check_job to poll for results. Requires credits.9 params

Run one or more named algorithms on media. Provide algorithm IDs (from list_algorithms) and either a public media_url or base64-encoded media content. For text, use the text param. Returns a job_id for async processing — use check_job to poll for results. Requires credits.

Parameters* required
algorithmsarray
Algorithm IDs to run (e.g. ['nightshade', 'glaze']). Use list_algorithms to discover IDs.
c2pa_wrapboolean
Wrap output in C2PA provenance signing (default: true)
filenamestring
Original filename for human-readable output naming
mediastring
Base64-encoded media content (alternative to media_url)
media_urlstring
Public URL of the media file to process
mimestring
MIME type of the media (e.g. image/png, audio/wav)
tagsarray
Tags for organizing and filtering
textstring
Plain text content (for text algorithms like spectra, textmark)
webhook_urlstring
URL to receive a POST when the job completes
protect_mediaProtect media using a curated preset level. Automatically selects the best combination of algorithms for the given media type. Simpler than run_algorithm — just specify standard or maximum protection. Provide either a public media_url, base64 media, or text content. Returns a...8 params

Protect media using a curated preset level. Automatically selects the best combination of algorithms for the given media type. Simpler than run_algorithm — just specify standard or maximum protection. Provide either a public media_url, base64 media, or text content. Returns a...

Parameters* required
filenamestring
Original filename for human-readable output naming
levelstring
Protection level: standard (fast, good protection) or maximum (slower, strongest). Default: standardone of standard · maximum
mediastring
Base64-encoded media content (alternative to media_url)
media_urlstring
Public URL of the media file to protect
mimestring
MIME type (e.g. image/png, audio/wav, text/plain)
tagsarray
Tags for organizing and filtering
textstring
Plain text content to protect
webhook_urlstring
URL to receive a POST when the job completes
check_jobCheck the status of an asynchronous job (from run_algorithm, protect_media, or detect_ai). Returns status (queued, processing, completed, failed), progress percentage, and result data including download URLs when complete.1 params

Check the status of an asynchronous job (from run_algorithm, protect_media, or detect_ai). Returns status (queued, processing, completed, failed), progress percentage, and result data including download URLs when complete.

Parameters* required
job_idstring
The job ID returned by a previous tool call
search_mediaSearch for similar or matching media across the indexed library. Provide a media_url or base64 media to find matches. Tiers: exact (hash match), quick (perceptual hash), perceptual (visual similarity), compositional (scene structure), full (all tiers). Returns results immediat...5 params

Search for similar or matching media across the indexed library. Provide a media_url or base64 media to find matches. Tiers: exact (hash match), quick (perceptual hash), perceptual (visual similarity), compositional (scene structure), full (all tiers). Returns results immediat...

Parameters* required
limitinteger
Maximum results to return (1-100, default: 20)
mediastring
Base64-encoded media content to search for
media_urlstring
Public URL of the media to search for
tagsarray
Restrict search to media with these tags
typestring
Search tier — controls depth vs speed tradeoff. Default: perceptualone of exact · quick · perceptual · compositional · full
list_searchesList previous similarity searches performed on your account. Returns a paginated list of past search queries with timestamps and result counts.2 params

List previous similarity searches performed on your account. Returns a paginated list of past search queries with timestamps and result counts.

Parameters* required
cursorstring
Pagination cursor from a previous response
limitinteger
Results per page (1-100, default: 20)
detect_aiDetect whether media content was generated by AI. Supports images, video, audio, and text/PDF. Runs multiple specialized detection models in parallel for the given media type. Returns a job_id — use check_job to poll for results.5 params

Detect whether media content was generated by AI. Supports images, video, audio, and text/PDF. Runs multiple specialized detection models in parallel for the given media type. Returns a job_id — use check_job to poll for results.

Parameters* required
mediastring
Base64-encoded media content to analyze
media_urlstring
Public URL of the media to analyze
mimestring
MIME type of the media (e.g. image/png, audio/wav, text/plain)
tagsarray
Tags for organizing and filtering
textstring
Plain text content to analyze for AI generation
detect_fingerprintDetect whether media has been previously registered or seen, using fingerprint matching. Compares against your indexed library at varying depth. Tiers: exact (hash match), quick (perceptual hash), perceptual (visual similarity), compositional (scene structure), full (all tiers...4 params

Detect whether media has been previously registered or seen, using fingerprint matching. Compares against your indexed library at varying depth. Tiers: exact (hash match), quick (perceptual hash), perceptual (visual similarity), compositional (scene structure), full (all tiers...

Parameters* required
mediastring
Base64-encoded media content to check
media_urlstring
Public URL of the media to check
tagsarray
Tags to scope the detection to
tierstring
Detection depth — controls thoroughness vs speed. Default: quickone of exact · quick · perceptual · compositional · full
detect_membershipRun membership inference to determine whether your protected content was used to train a suspect AI model. Provide content IDs (from your registered media) and the model to test. Methods: pattern (watermark detection), statistical (distribution analysis), combined (both). Retu...4 params

Run membership inference to determine whether your protected content was used to train a suspect AI model. Provide content IDs (from your registered media) and the model to test. Methods: pattern (watermark detection), statistical (distribution analysis), combined (both). Retu...

Parameters* required
content_idsarray
UUIDs of your registered media to test against the suspect model
methodstring
Inference method. Default: combinedone of pattern · statistical · combined
suspect_modelstring
Identifier or name of the AI model suspected of training on your content
tagsarray
Tags for organizing and filtering
register_mediaRegister and protect media on the Sidearm platform. Modes: register (provenance signing only), search_ready (register + vector indexing), standard (search_ready + watermarks + AI-training poison), maximum (standard + style cloaking + adversarial hardening). Returns the created...5 params

Register and protect media on the Sidearm platform. Modes: register (provenance signing only), search_ready (register + vector indexing), standard (search_ready + watermarks + AI-training poison), maximum (standard + style cloaking + adversarial hardening). Returns the created...

Parameters* required
expires_atstring
ISO 8601 datetime when this registration expires
mediastring
Base64-encoded media content to register
media_urlstring
Public URL of the media to register
modestring
Protection level. Default: standardone of register · search_ready · standard · maximum
tagsarray
Tags for organizing and filtering
list_mediaList media assets registered to your account. Returns a paginated list with media IDs, types, status, tags, and protection details. Use cursor-based pagination for large libraries.2 params

List media assets registered to your account. Returns a paginated list with media IDs, types, status, tags, and protection details. Use cursor-based pagination for large libraries.

Parameters* required
cursorstring
Pagination cursor from a previous response
limitinteger
Results per page (1-100, default: 20)
get_mediaGet details of a specific registered media asset by ID. Returns metadata, protection status, applied algorithms, tags, and storage information.1 params

Get details of a specific registered media asset by ID. Returns metadata, protection status, applied algorithms, tags, and storage information.

Parameters* required
media_idstring
UUID of the media asset
update_mediaUpdate a registered media asset. Currently supports updating the original media URL (e.g., after re-hosting the original file).2 params

Update a registered media asset. Currently supports updating the original media URL (e.g., after re-hosting the original file).

Parameters* required
media_idstring
UUID of the media asset to update
original_media_urlstring
New URL for the original (unprotected) media file
delete_mediaPermanently delete a registered media asset. Removes storage files, vector embeddings, and all associated metadata. This action cannot be undone.1 params

Permanently delete a registered media asset. Removes storage files, vector embeddings, and all associated metadata. This action cannot be undone.

Parameters* required
media_idstring
UUID of the media asset to delete
get_rightsGet rights and licensing information for a registered media asset. Returns C2PA content credentials, Schema.org structured data, IPTC rights metadata, and TDM-AI protocol declarations. Useful for verifying provenance and license terms.1 params

Get rights and licensing information for a registered media asset. Returns C2PA content credentials, Schema.org structured data, IPTC rights metadata, and TDM-AI protocol declarations. Useful for verifying provenance and license terms.

Parameters* required
media_idstring
UUID of the media asset
get_billingGet billing, usage summary, storage stats, and algorithm breakdown for your account. Returns credit balance, protection/storage cost breakdown, per-algorithm usage, billing events, and a link to the Stripe customer portal. Filter by date range, event type, tags, or API token.6 params

Get billing, usage summary, storage stats, and algorithm breakdown for your account. Returns credit balance, protection/storage cost breakdown, per-algorithm usage, billing events, and a link to the Stripe customer portal. Filter by date range, event type, tags, or API token.

Parameters* required
account_idstring
Your account UUID
end_datestring
Filter events until this ISO 8601 date (inclusive)
start_datestring
Filter events from this ISO 8601 date (inclusive)
tagsstring
Comma-separated tags to filter by
token_idstring
Filter events to a specific API token UUID
typestring
Filter by event type
get_provenanceGet the full provenance chain for a media asset. Returns every protection algorithm applied (with versions, timings, and metadata), the C2PA manifest, any AI training membership inference results, and every search where this media appeared as a match. Use this to audit the com...1 params

Get the full provenance chain for a media asset. Returns every protection algorithm applied (with versions, timings, and metadata), the C2PA manifest, any AI training membership inference results, and every search where this media appeared as a match. Use this to audit the com...

Parameters* required
media_idstring
UUID of the media asset
search_docsSearch the Sidearm API documentation. Returns relevant sections from the full developer reference covering endpoints, request/response formats, authentication, SDKs, algorithms, and usage examples. Use this to look up how to call an endpoint, understand a concept, or find exam...1 params

Search the Sidearm API documentation. Returns relevant sections from the full developer reference covering endpoints, request/response formats, authentication, SDKs, algorithms, and usage examples. Use this to look up how to call an endpoint, understand a concept, or find exam...

Parameters* required
querystring
What to look for — e.g. 'authenticate', 'protect media', 'detect AI', 'Node SDK', 'watermark'
navigate_uiLook up how to perform an action in the Sidearm dashboard UI. Returns step-by-step instructions for dashboard operations such as uploading media, running searches, managing API keys, reviewing deals, buying credits, and more. Use this when the user asks how to do something in...1 params

Look up how to perform an action in the Sidearm dashboard UI. Returns step-by-step instructions for dashboard operations such as uploading media, running searches, managing API keys, reviewing deals, buying credits, and more. Use this when the user asks how to do something in...

Parameters* required
querystring
What the user wants to do — e.g. 'upload files', 'create API key', 'buy credits', 'accept a deal', 'check usage'

Sponsors

Configuration

SDRM_API_KEYsecret

Your Sidearm API key (sk_live_... or sk_test_...). Optional — documentation tools work without it.

SDRM_BASE_URL

Override the API base URL (default: https://api.sdrm.io)

Readme

@sidearmdrm/mcp

MCP server for the Sidearm API — 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 (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 and create an API key at sdrm.io/api-keys.

2. Configure your agent

Add to your MCP configuration file:

Cursor (.cursor/mcp.json):

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

Claude Desktop (claude_desktop_config.json):

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

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


View the full README on GitHub

Details

Repository
github.com/sidearmdrm/mcp-server
Category
Media & Entertainment
Package
@sidearmdrm/mcp
Transport
STDIO
Auth
Required
Registry
MCP registry, active

Related Media & Entertainment MCP servers

View all
1fredpsantos33 avatarIteratoolsfredpsantos33/iteratools-mcp40+ pay-per-use tools for AI agents: search, TTS, QR, PDF, scraping, image gen. x402.0stars
2heirloomz avatarOral Heritage Indexheirloomz/inktree-social-toolsAuthoritative cited answers about saving family stories. Published by InkTree.0stars
3lumiclip avatarLumicliplumiclip/lumiclip-mcp-serverTurn YouTube videos into short-form clips from any AI assistant0stars
4nelsonjordanme avatarClyptnelsonjordanme/clypt-mcp-serverModel Context Protocol server for Clypt — submit podcast URLs, receive clips and trailer.0stars
5petitsolu avatarSoluble(s) — Podcast de journalisme de solutionspetitsolu/soluble-mcpSolutions journalism podcast (FR): ecology, climate, society. Search, transcripts, junior versions.0stars
6pipeworx-io avatarOpenversepipeworx-io/mcp-openverseOpenverse MCP — Creative-Commons-licensed image + audio search.0stars