Skip to main content
Glama

@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):

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

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

Related MCP server: Reality Defender MCP Server

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.

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

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

License

MIT

Available Tools

16 tools
check_jobA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job ID returned by a previous tool call

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it's a read operation (checking status), returns specific status values (queued, processing, completed, failed), progress percentage, and result data including download URLs. However, it doesn't mention error handling, rate limits, authentication needs, or whether the job ID must be from the current session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise and front-loaded: the first clause states the core purpose, followed by essential details about return values. Every sentence earns its place with no wasted words, and the structure moves from general to specific efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description provides good completeness: it explains the purpose, when to use it, and what it returns. However, it doesn't specify the format of result data or download URLs, and with no annotations, some behavioral aspects like error cases remain uncovered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single parameter 'job_id' as 'The job ID returned by a previous tool call.' The description adds context by listing which previous tools (run_algorithm, protect_media, detect_ai) provide these job IDs, which adds some semantic value beyond the schema. Baseline 3 is appropriate when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('check the status') and resources ('asynchronous job'), and distinguishes it from siblings by listing the specific job-creating tools (run_algorithm, protect_media, detect_ai). It goes beyond a simple tautology of the name 'check_job' by specifying what kind of job it checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use this tool: after calling run_algorithm, protect_media, or detect_ai, when you have a job ID. It implicitly distinguishes from siblings by referencing those specific tools. However, it doesn't explicitly state when NOT to use it or mention alternatives for job status checking.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_mediaA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesUUID of the media asset to delete

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior by specifying that it 'Removes storage files, vector embeddings, and all associated metadata' and warns 'This action cannot be undone,' which covers key aspects like destructiveness and irreversibility. However, it lacks details on permissions, rate limits, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, consisting of two concise sentences that convey critical information without waste. The first sentence states the action and scope, and the second emphasizes the irreversible nature, making every sentence earn its place effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a destructive operation with no annotations and no output schema, the description is reasonably complete. It covers the action, scope, and irreversibility, but could benefit from mentioning potential side effects or response formats. However, it adequately addresses the core behavioral aspects for an agent to understand the tool's impact.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the parameter 'media_id' fully documented in the schema as 'UUID of the media asset to delete'. The description does not add any additional meaning or context beyond what the schema provides, so it meets the baseline for high schema coverage without compensating with extra details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Permanently delete') and resource ('a registered media asset'), distinguishing it from siblings like 'get_media' or 'update_media'. It explicitly indicates the scope of deletion, making the action distinct and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating the tool deletes media assets, but it does not provide explicit guidance on when to use this tool versus alternatives like 'update_media' or 'protect_media'. No prerequisites or exclusions are mentioned, leaving the context somewhat open-ended.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_aiA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_urlNoPublic URL of the media to analyze
mediaNoBase64-encoded media content to analyze
textNoPlain text content to analyze for AI generation
mimeNoMIME type of the media (e.g. image/png, audio/wav, text/plain)
tagsNoTags for organizing and filtering

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses key behavioral traits: the asynchronous nature ('Returns a job_id — use check_job to poll for results') and parallel processing approach. However, it lacks details about rate limits, authentication needs, error conditions, or what happens to submitted media.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly front-loaded with the core purpose first, followed by supported formats, processing approach, and output handling. Every sentence earns its place with zero wasted words, making it highly efficient for agent comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (asynchronous detection with multiple input methods) and no annotations/output schema, the description does well by explaining the asynchronous workflow and supported media types. However, it could better address error handling, performance expectations, or how to choose between the three input parameters (media_url, media, text).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds minimal parameter semantics beyond the schema: it implies media_url, media, and text are alternative input methods, and mentions media types supported. However, it doesn't explain parameter relationships or usage patterns beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Detect whether media content was generated by AI' with specific verb ('Detect') and resource ('media content'), and distinguishes from siblings by mentioning 'Runs multiple specialized detection models in parallel for the given media type'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage: 'Supports images, video, audio, and text/PDF' and explicitly mentions the alternative tool 'check_job' for polling results. However, it doesn't specify when NOT to use this tool or compare with other detection siblings like detect_fingerprint or detect_membership.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_fingerprintA

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). Returns results immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_urlNoPublic URL of the media to check
mediaNoBase64-encoded media content to check
tagsNoTags to scope the detection to
tierNoDetection depth — controls thoroughness vs speed. Default: quick

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it compares against an indexed library, operates at varying depth tiers, and returns results immediately. It doesn't mention rate limits, authentication needs, or error conditions, but covers the core operational behavior adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by operational details and tier explanations. Every sentence earns its place by adding necessary context without redundancy. It's appropriately sized for a tool with 4 parameters and no annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is mostly complete. It explains what the tool does, how it works, and the tier system. However, it doesn't describe the return format or error handling, which would be helpful for an agent invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds some value by explaining the tier parameter's purpose ('controls thoroughness vs speed') and listing the tier options, but doesn't provide additional semantics beyond what the schema already documents for parameters like media_url or tags.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('detect', 'compare') and resources ('media', 'fingerprint matching', 'indexed library'). It distinguishes from siblings like 'check_job' or 'search_media' by focusing on fingerprint-based detection rather than status checking or general searching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through the tier system (e.g., 'exact' for hash matches, 'quick' for speed), but doesn't explicitly state when to use this tool versus alternatives like 'detect_ai' or 'search_media'. No guidance on prerequisites or exclusions is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_membershipA

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). Returns a job_id — use check_job to poll for results.

ParametersJSON Schema
NameRequiredDescriptionDefault
content_idsYesUUIDs of your registered media to test against the suspect model
suspect_modelYesIdentifier or name of the AI model suspected of training on your content
methodNoInference method. Default: combined
tagsNoTags for organizing and filtering

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses key behavioral traits: it's an inference operation (not destructive), returns a job_id for asynchronous processing, and mentions three methods (pattern, statistical, combined). However, it lacks details on rate limits, authentication needs, or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with every sentence earning its place: first sentence states purpose, second specifies inputs and methods, third explains the return value and follow-up action. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (asynchronous inference with multiple methods) and no output schema, the description is mostly complete—it explains the purpose, inputs, methods, and that results require polling via check_job. However, it could better address error cases or output format details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters well. The description adds minimal value by briefly mentioning the methods (pattern, statistical, combined) and that content_ids are from registered media, but does not provide additional syntax or format details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('run membership inference', 'determine') and resources ('protected content', 'suspect AI model'), distinguishing it from siblings like detect_ai or detect_fingerprint by focusing on training data detection rather than general AI detection or fingerprinting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (to test if registered media was used in training a suspect model) and mentions an alternative tool (check_job for polling results), but does not explicitly state when not to use it or compare it to other siblings like detect_ai.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_billingB

Get billing and usage events for your account. Returns credit consumption, API call history, and a link to the Stripe customer portal. Filter by date range, event type, or tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesYour account UUID
start_dateNoFilter events from this ISO 8601 date (inclusive)
end_dateNoFilter events until this ISO 8601 date (inclusive)
typeNoFilter by event type
tagsNoComma-separated tags to filter by

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the tool as a 'Get' operation, implying read-only behavior, and lists return types, but lacks details on permissions, rate limits, pagination, or error handling. This is a moderate gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with the core purpose stated first and filtering details added concisely. Both sentences earn their place by clarifying scope and capabilities, though it could be slightly more structured for optimal readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (5 parameters, no output schema, no annotations), the description is partially complete. It covers the purpose and return data but lacks usage guidelines, behavioral details like authentication or limits, and output specifics. This leaves gaps for an agent to operate effectively without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds minimal value by mentioning filtering by date range, event type, or tags, which aligns with the schema but does not provide additional syntax or format details beyond what's in the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get billing and usage events') and resources ('for your account'), and it distinguishes itself from sibling tools by focusing on billing data rather than media processing, detection, or job management. It specifies what data is returned (credit consumption, API call history, Stripe portal link), making the purpose explicit and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions filtering capabilities but does not specify scenarios, prerequisites, or exclusions, nor does it reference any sibling tools for related tasks. Without such context, an agent might struggle to determine the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mediaA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesUUID of the media asset

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates this is a read operation ('Get details') and lists the types of information returned (metadata, protection status, etc.), which adds useful context. However, it does not cover aspects like error handling, authentication needs, or rate limits, leaving gaps in behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the tool's purpose and return values without any redundant information. It is front-loaded with the core action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (single parameter, read-only operation) and lack of annotations or output schema, the description is adequate but incomplete. It specifies what information is returned but not the format or structure, which could hinder an agent's ability to interpret results effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the single parameter 'media_id' documented as a 'UUID of the media asset'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get details') and resource ('specific registered media asset by ID'), distinguishing it from sibling tools like list_media (which lists multiple assets) and delete_media (which removes assets). It specifies the exact scope of retrieval, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when details for a specific media asset are needed, but it does not explicitly state when to use this tool versus alternatives like list_media (for browsing) or search_media (for querying). No exclusions or prerequisites are mentioned, leaving some ambiguity in context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rightsB

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesUUID of the media asset

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but lacks key behavioral details. It mentions the return content types (C2PA, Schema.org, etc.) but doesn't disclose permissions needed, rate limits, error conditions, or whether it's a read-only operation. The description adds some context but is insufficient for a mutation-free tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with two sentences: one stating purpose and return values, another providing usage context. It's front-loaded with core functionality and avoids unnecessary details, though it could be slightly more structured (e.g., bullet points for return types).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 1 parameter with full schema coverage and no output schema, the description is moderately complete. It explains what the tool returns but lacks details on response format, error handling, or authentication needs. For a simple read operation, this is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single 'media_id' parameter. The description doesn't add any parameter-specific semantics beyond what's in the schema (e.g., format examples or constraints). Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('rights and licensing information for a registered media asset'), distinguishing it from siblings like 'get_media' or 'get_billing'. However, it doesn't explicitly differentiate from potential similar tools like 'check_job' or 'detect_fingerprint' in terms of rights-specific focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating 'Useful for verifying provenance and license terms', which suggests when to use this tool. However, it doesn't provide explicit guidance on when not to use it or name alternatives among siblings (e.g., 'get_media' for general info vs. this for rights).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_algorithmsA

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, proprietary = Sidearm bundles) or media_type (image, video, audio, text, pdf, gif).

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by algorithm category
media_typeNoFilter by supported media type

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it returns algorithm IDs, names, supported media types, and descriptions, and supports filtering by category and media_type. However, it lacks details on response format (e.g., pagination, error handling) or performance aspects (e.g., rate limits), which are minor gaps given the tool's simple read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by usage guidance and filtering details. Every sentence earns its place: the first states what it does and returns, the second provides usage context, and the third explains filtering options. It is appropriately sized with zero waste, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (simple read-only list with filtering), no annotations, and no output schema, the description is largely complete. It covers purpose, usage, parameters, and return data. However, without an output schema, it could benefit from more detail on the structure of returned algorithm information (e.g., fields like 'id', 'name'), but the mention of specific data points (IDs, names, etc.) mitigates this gap adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with both parameters well-documented via enums and descriptions. The description adds value by explaining the semantics of 'category' (open = research algorithms, proprietary = Sidearm bundles) and 'media_type' options, but this is largely redundant with the schema. Baseline 3 is appropriate as the schema does the heavy lifting, and the description provides only marginal additional context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb ('List') and resource ('available algorithms for media protection, watermarking, and AI content disruption'), and distinguishes it from sibling tools by mentioning its role in discovering algorithm IDs before calling 'run_algorithm'. It explicitly differentiates from other tools like 'run_algorithm', 'protect_media', or 'list_media' by focusing on algorithm discovery rather than execution or media listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Use this to discover valid algorithm IDs before calling run_algorithm') and includes filtering options (category and media_type) to refine results. It clearly positions this as a prerequisite step for 'run_algorithm', offering clear alternatives for different needs (e.g., use other tools for media operations).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mediaA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response
limitNoResults per page (1-100, default: 20)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it returns a paginated list with specific fields (media IDs, types, status, tags, protection details) and uses cursor-based pagination. However, it doesn't mention rate limits, authentication requirements, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place: the first states the core purpose and return format, the second explains pagination behavior. No wasted words, well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides good context about what the tool returns (paginated list with specific fields) and its pagination behavior. For a list operation with 2 parameters, this is reasonably complete, though it could mention authentication or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (cursor for pagination, limit for results per page). The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('media assets registered to your account'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'search_media' or 'get_media', which would require more specific scope clarification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving media assets with pagination for large libraries, but doesn't explicitly state when to use this tool versus alternatives like 'search_media' (for filtered searches) or 'get_media' (for single media retrieval). No explicit exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_searchesA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response
limitNoResults per page (1-100, default: 20)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it returns 'a paginated list' (important for handling large result sets), specifies what data is included ('past search queries with timestamps and result counts'), and implies read-only behavior through 'List' and 'Returns'. It doesn't mention rate limits, authentication needs, or data retention policies, but provides solid core behavioral information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise and well-structured: two sentences that efficiently convey purpose, scope, and key behavioral characteristics. Every word earns its place, with no redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with 2 parameters and 100% schema coverage but no output schema, the description provides good contextual completeness. It explains what's returned (past search queries with timestamps and result counts) and that results are paginated, which compensates for the lack of output schema. It could potentially mention authentication scope or data freshness, but covers the essentials well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters (cursor for pagination, limit for results per page). The description adds no additional parameter information beyond what's in the schema, but doesn't need to since schema coverage is complete. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List previous similarity searches performed on your account' - a specific verb ('List') and resource ('previous similarity searches'). It distinguishes from siblings like 'search_media' (which performs searches) by focusing on historical search queries rather than executing new searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through 'previous similarity searches' and 'past search queries', suggesting this is for retrieving history rather than performing operations. However, it doesn't explicitly state when to use this versus alternatives like 'search_media' or provide any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

protect_mediaA

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 job_id — use check_job to poll for results.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_urlNoPublic URL of the media file to protect
mediaNoBase64-encoded media content (alternative to media_url)
textNoPlain text content to protect
mimeNoMIME type (e.g. image/png, audio/wav, text/plain)
levelNoProtection level: standard (fast, good protection) or maximum (slower, strongest protection). Default: standard
tagsNoTags for organizing and filtering
webhook_urlNoURL to receive a POST when the job completes
filenameNoOriginal filename for human-readable output naming

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it's an asynchronous operation (returns job_id, requires polling with check_job), accepts multiple input formats (URL, base64, or text), automatically selects algorithms, and has different performance characteristics for protection levels. It doesn't mention authentication needs, rate limits, or error conditions, but covers the essential workflow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly front-loaded with the core purpose, followed by key usage details and workflow information. Every sentence earns its place: first states what it does, second explains the simplicity vs alternatives, third specifies input options, fourth explains the asynchronous nature. Zero waste, appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 8 parameters, no annotations, and no output schema, the description does well by explaining the asynchronous workflow, input options, and comparison to alternatives. It covers the essential context an agent needs to use the tool correctly, though it could benefit from mentioning authentication requirements or error handling scenarios given the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds some context about parameter usage ('Provide either a public media_url, base64 media, or text content') and the level parameter ('standard (fast, good protection) or maximum (slower, strongest protection)'), but doesn't significantly enhance understanding beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('protect media') and resource ('media'), and explicitly distinguishes it from sibling 'run_algorithm' by noting it's 'simpler' and uses 'curated preset level'. This provides clear differentiation from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('simpler than run_algorithm — just specify standard or maximum protection') and mentions an alternative ('run_algorithm'). However, it doesn't explicitly state when NOT to use this tool or compare it to other siblings like 'register_media' or 'update_media' that might handle media differently.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_mediaA

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 media object.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_urlNoPublic URL of the media to register
mediaNoBase64-encoded media content to register
modeNoProtection level. Default: standard
expires_atNoISO 8601 datetime when this registration expires
tagsNoTags for organizing and filtering

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that the tool creates a media object and outlines behavioral traits like different protection modes (e.g., watermarks, AI-training poison, adversarial hardening). However, it lacks details on permissions, rate limits, error handling, or whether the operation is idempotent, which are important for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by a concise breakdown of modes and the return value. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with multiple protection modes), no annotations, and no output schema, the description is moderately complete. It covers the purpose, modes, and return value, but lacks details on error cases, side effects, or how it interacts with sibling tools, leaving gaps for an AI agent to infer behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the semantics of the 'mode' parameter with detailed level definitions (register, search_ready, standard, maximum), which goes beyond the schema's enum list. It also clarifies the return value ('Returns the created media object'), compensating for the lack of output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'register and protect' with the resource 'media on the Sidearm platform', and distinguishes this tool from siblings like 'protect_media' by specifying it's for initial registration with protection levels. It provides specific details about different modes, making the purpose explicit and distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by detailing different protection modes (register, search_ready, standard, maximum), which helps guide when to use each level. However, it doesn't explicitly state when to use this tool versus alternatives like 'protect_media' or 'update_media', or mention any prerequisites or exclusions, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_algorithmA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
algorithmsYesAlgorithm IDs to run (e.g. ['nightshade', 'glaze']). Use list_algorithms to discover IDs.
media_urlNoPublic URL of the media file to process
mediaNoBase64-encoded media content (alternative to media_url)
textNoPlain text content (for text algorithms like spectra, textmark)
mimeNoMIME type of the media (e.g. image/png, audio/wav)
tagsNoTags for organizing and filtering
webhook_urlNoURL to receive a POST when the job completes
c2pa_wrapNoWrap output in C2PA provenance signing (default: true)
filenameNoOriginal filename for human-readable output naming

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and adds significant behavioral context: it discloses async processing ('Returns a job_id for async processing'), cost implications ('Requires credits'), and input alternatives (media_url vs media vs text). It doesn't mention rate limits or error behaviors, but covers core operational traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero waste: first states purpose and inputs, second explains async nature and polling, third notes credit requirement. Each sentence earns its place by providing essential information not obvious from other fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters, no annotations, and no output schema, the description does well: it covers purpose, usage, async behavior, and cost. It could mention error cases or output format, but given the schema's 100% coverage and explicit sibling references, it's largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly. The description adds minimal value beyond schema: it mentions algorithm IDs come from 'list_algorithms' and text is for 'text algorithms like spectra, textmark', but doesn't provide additional syntax or format details. Baseline 3 is appropriate when schema does heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Run one or more named algorithms on media') and identifies the resource ('media'). It distinguishes from siblings by specifying algorithm IDs come from 'list_algorithms' and mentions text processing as an alternative, differentiating from tools like 'detect_ai' or 'protect_media'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: when to use ('on media'), prerequisites ('algorithm IDs from list_algorithms'), alternatives ('text param for text algorithms'), and next steps ('use check_job to poll for results'). It clearly distinguishes from sibling tools by specifying the processing context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_mediaB

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 immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_urlNoPublic URL of the media to search for
mediaNoBase64-encoded media content to search for
typeNoSearch tier — controls depth vs speed tradeoff. Default: perceptual
tagsNoRestrict search to media with these tags
limitNoMaximum results to return (1-100, default: 20)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds value by explaining the search tiers (e.g., 'exact (hash match), quick (perceptual hash)') and noting 'Returns results immediately,' which hints at real-time behavior. However, it lacks details on permissions, rate limits, error handling, or what the results look like, leaving gaps for a mutation-free but complex search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose. Sentences are efficient, with no wasted words, though the list of tiers could be slightly condensed. Overall, it's well-structured and concise for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides adequate context for a search tool but has gaps. It covers the purpose and tiers well, but lacks details on result format, error cases, or integration with siblings. For a 5-parameter tool with rich schema but no output info, it's minimally complete but could benefit from more behavioral or output guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal semantics by mentioning 'media_url or base64 media' and listing the search tiers, but this largely repeats schema info. No additional syntax or format details are provided beyond what the schema covers, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search for similar or matching media') and resource ('across the indexed library'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'list_media' or 'get_media' beyond mentioning search tiers, which could help with sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool by stating 'Provide a media_url or base64 media to find matches,' suggesting it's for finding similar media rather than listing or retrieving specific media. However, it doesn't explicitly contrast with alternatives like 'list_media' or 'get_media,' nor does it provide exclusions or prerequisites, leaving usage context somewhat implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_mediaB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesUUID of the media asset to update
original_media_urlYesNew URL for the original (unprotected) media file

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions the tool updates a media asset, implying mutation, but lacks details on permissions needed, whether changes are reversible, rate limits, or error conditions. The example ('after re-hosting') adds minimal context but doesn't cover behavioral traits adequately for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and followed by a specific example. Every sentence adds value without redundancy, making it efficient and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is moderately complete for a simple update tool. It covers the purpose and a usage hint but lacks details on behavior, error handling, or return values. For a mutation tool with 2 parameters, it's adequate but has clear gaps in transparency and completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters (media_id as UUID, original_media_url as URI). The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints. Baseline 3 is appropriate since the schema handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('registered media asset'), specifying the current capability ('updating the original media URL'). It distinguishes from siblings like 'delete_media' or 'get_media' by focusing on modification rather than deletion or retrieval. However, it doesn't explicitly contrast with 'protect_media' or 'register_media', which are related operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('after re-hosting the original file'), suggesting this tool is for URL updates post-registration. It doesn't provide explicit when-not-to-use guidance or name alternatives (e.g., 'register_media' for initial creation), leaving some ambiguity about its scope versus other media-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 16 tool updatesv0.1.0
    • First observedcheck_job
    • First observeddelete_media
    • First observeddetect_ai
    • First observeddetect_fingerprint
    • First observeddetect_membership
    • First observedget_billing
    • First observedget_media
    • First observedget_rights
    • First observedlist_algorithms
    • First observedlist_media
    • First observedlist_searches
    • First observedprotect_media
    • First observedregister_media
    • First observedrun_algorithm
    • First observedsearch_media
    • First observedupdate_media

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, such as detect_ai for AI detection, protect_media for protection, and search_media for similarity searches. However, there is some overlap between detect_fingerprint and search_media, as both perform fingerprint matching with similar tier options, which could cause confusion in tool selection.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structures, such as check_job, delete_media, and list_algorithms. The naming is predictable and readable throughout the set, with no deviations in style or convention.

Tool Count4/5

With 16 tools, the count is slightly high but reasonable for a media protection and detection platform, covering a broad domain including registration, protection, detection, search, and management. It might feel a bit heavy, but each tool appears to serve a specific function without obvious redundancy.

Completeness5/5

The tool set provides comprehensive coverage for media management, including CRUD operations (register, get, update, delete), detection (AI, fingerprint, membership), protection (run_algorithm, protect_media), search, and billing. There are no apparent gaps, and the tools support full lifecycle management from registration to deletion.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes AgentShield security scanning tools to protect AI clients by detecting threats like prompt injections, PII leakage, and SSRF. It enables real-time monitoring of inputs, outputs, and tool definitions to ensure secure interactions with AI models.
    21
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to access comprehensive sports data including football, basketball, American football, and hockey leagues via 11 tools, with no API key required.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables capturing evidence, retrieving platform takedown processes, and drafting DMCA/legal notices for content removal, using the Official AI API.
    4
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sidearmDRM/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server