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.
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 paramsList 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...
categorystringopen · proprietarymedia_typestringimage · video · audio · text · pdf · gifrun_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 paramsRun 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.
mimestringtagsarraytextstringmediastringfilenamestringc2pa_wrapbooleanmedia_urlstringalgorithmsarraywebhook_urlstringprotect_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 paramsProtect 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...
mimestringtagsarraytextstringlevelstringstandard · maximummediastringfilenamestringmedia_urlstringwebhook_urlstringcheck_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 paramsCheck 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.
job_idstringsearch_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 paramsSearch 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...
tagsarraytypestringexact · quick · perceptual · compositional · fulllimitintegermediastringmedia_urlstringlist_searchesList previous similarity searches performed on your account. Returns a paginated list of past search queries with timestamps and result counts.2 paramsList previous similarity searches performed on your account. Returns a paginated list of past search queries with timestamps and result counts.
limitintegercursorstringdetect_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 paramsDetect 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.
mimestringtagsarraytextstringmediastringmedia_urlstringdetect_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 paramsDetect 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...
tagsarraytierstringexact · quick · perceptual · compositional · fullmediastringmedia_urlstringdetect_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 paramsRun 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...
tagsarraymethodstringpattern · statistical · combinedcontent_idsarraysuspect_modelstringregister_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 paramsRegister 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...
modestringregister · search_ready · standard · maximumtagsarraymediastringmedia_urlstringexpires_atstringlist_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 paramsList 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.
limitintegercursorstringget_mediaGet details of a specific registered media asset by ID. Returns metadata, protection status, applied algorithms, tags, and storage information.1 paramsGet details of a specific registered media asset by ID. Returns metadata, protection status, applied algorithms, tags, and storage information.
media_idstringupdate_mediaUpdate a registered media asset. Currently supports updating the original media URL (e.g., after re-hosting the original file).2 paramsUpdate a registered media asset. Currently supports updating the original media URL (e.g., after re-hosting the original file).
media_idstringoriginal_media_urlstringdelete_mediaPermanently delete a registered media asset. Removes storage files, vector embeddings, and all associated metadata. This action cannot be undone.1 paramsPermanently delete a registered media asset. Removes storage files, vector embeddings, and all associated metadata. This action cannot be undone.
media_idstringget_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 paramsGet 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.
media_idstringget_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 paramsGet 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.
tagsstringtypestringend_datestringtoken_idstringaccount_idstringstart_datestringget_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 paramsGet 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...
media_idstringsearch_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 paramsSearch 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...
querystringnavigate_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 paramsLook 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...
querystringMCP 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.
Sign up at sdrm.io and create an API key at sdrm.io/api-keys.
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):
{
"mcpServers": {
"sdrm": {
"command": "npx",
"args": ["-y", "@sidearmdrm/mcp"],
"env": {
"SDRM_API_KEY": "sk_live_..."
}
}
}
}
That's it. Your agent can now call Sidearm tools.
| Tool | Description |
|---|---|
list_algorithms | Browse available protection algorithms. Filter by category or media type. |
| 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. |
| Tool | Description |
|---|---|
check_job | Poll async job status. Returns progress and results when complete. |
| 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. |
| Tool | Description |
|---|---|
search_media | Search for similar media across your indexed library. |
list_searches | List previous searches on your account. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
"Protect this image from AI training"
Agent calls
protect_mediawith the image URL, thencheck_jobto get the protected file.
"What algorithms are available for audio?"
Agent calls
list_algorithmswithmedia_type: "audio".
"Run Nightshade and Glaze on my artwork"
Agent calls
run_algorithmwithalgorithms: ["nightshade", "glaze"].
"Is this photo AI-generated?"
Agent calls
detect_aiwith the image, thencheck_jobfor results.
"Was my artwork used to train Stable Diffusion?"
Agent calls
detect_membershipwith your media IDs and the model name.
"How do I upload files in the dashboard?"
Agent calls
navigate_uiwithquery: "upload files"for step-by-step instructions.
| 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) |
git clone https://github.com/sidearmDRM/mcp-server.git
cd mcp-server
npm install
npm run build
Test locally with the MCP Inspector:
SDRM_API_KEY=sk_test_... npx @modelcontextprotocol/inspector node dist/index.js
MIT
SDRM_API_KEYsecretYour Sidearm API key (sk_live_... or sk_test_...). Optional — documentation tools work without it.
SDRM_BASE_URLOverride the API base URL (default: https://api.sdrm.io)