Sidearm MCP Server
The Sidearm MCP Server exposes the Sidearm API as MCP tools, enabling AI agents to protect creative media from AI training, detect AI-generated content, and manage media assets.
Media Protection
Apply specific algorithms (e.g., Nightshade, Glaze) or preset protection levels (
standard/maximum) to images, video, audio, text, PDFs, and GIFsExtract raw embedding vectors for similarity search or ML pipelines
Browse available protection algorithms by category or media type
AI & Content Detection
Detect whether media was AI-generated (images, video, audio, text)
Check if media has been previously registered via fingerprint matching
Run membership inference to determine if content was used to train a specific AI model
Media Search
Search an indexed library for similar/matching media at varying depths (exact, perceptual, compositional, etc.)
List and review previous searches
Media Library Management
Register, list, retrieve, update, and permanently delete media assets with optional protection modes
Provenance & Rights
Retrieve full provenance chains (algorithms, C2PA manifests, membership results)
Access C2PA, IPTC, and TDM-AI rights/licensing metadata for assets
Identify media by its embedded Sidearm fingerprint
Sharing
Create, retrieve, and publish shareable links for detection, search, or provenance results
Job Monitoring
Poll and retrieve results of asynchronous processing jobs (protection, detection, etc.)
Account & Billing
View account details, credit balance, usage breakdown, billing history, and billing portal access
Deletion Records
List and inspect records of permanently deleted assets
Documentation
Search the Sidearm API developer docs and get step-by-step UI navigation instructions
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Sidearm MCP ServerProtect my artwork from AI training"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@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 |
| Browse available protection algorithms. Filter by category or media type. |
Protection & Extraction
Tool | Description |
| Run specific algorithms on media by ID. Returns a job for async processing. |
| Protect media with a preset level (standard/maximum). Auto-selects algorithms. |
| Extract raw embedding vectors from media for downstream similarity search or ML pipelines. |
Jobs
Tool | Description |
| Poll async job status. Returns progress and results when complete. |
Detection
Tool | Description |
| Detect whether media was AI-generated. Supports image, video, audio, text. |
| Check if media has been previously registered using fingerprint matching. |
| Test whether your content was used to train a suspect AI model. |
Search
Tool | Description |
| Search for similar media across your indexed library. |
| List previous searches on your account. |
Media Management
Tool | Description |
| Register and index media with optional protection mode (register, search_ready, standard, maximum). |
| List media assets in your library (paginated, filterable). |
| Get details of a specific media asset including protection status and algorithms applied. |
| Update media metadata (e.g., original URL). |
| Permanently delete a media asset and all associated data. |
Account, Rights & Billing
Tool | Description |
| Get your account details — ID, name, email, credit balance, and plan info. |
| Get C2PA, IPTC, and rights information for a media asset. |
| View credit balance, usage breakdown, per-algorithm costs, and billing portal link. |
Provenance & Identification
Tool | Description |
| Get the full provenance chain for an asset — algorithms, C2PA manifest, membership results. |
| Identify media by its embedded Sidearm fingerprint and extract its C2PA provenance chain. |
Shares
Tool | Description |
| Create a shareable link for a detection, search, or provenance result (starts private). |
| Get a shared result by its share ID. |
| Make a shared result publicly accessible. |
Deletion Records
Tool | Description |
| List deletion records documenting permanently deleted assets. |
| Get details of a specific deletion record including purged algorithms and storage status. |
Documentation
Tool | Description |
| Search the Sidearm API documentation. Returns relevant sections from the full developer reference. |
| 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_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.
Environment Variables
Variable | Required | Description |
| Yes | Your Sidearm API key ( |
| No | Override the API base URL (default: |
Development
git clone https://github.com/sidearmDRM/mcp-server.git
cd mcp-server
npm install
npm run buildTest locally with the MCP Inspector:
SDRM_API_KEY=sk_test_... npx @modelcontextprotocol/inspector node dist/index.jsLicense
MIT
Available Tools
16 toolscheck_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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job ID returned by a previous tool call |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | UUID of the media asset to delete |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| media_url | No | Public URL of the media to analyze | |
| media | No | Base64-encoded media content to analyze | |
| text | No | Plain text content to analyze for AI generation | |
| mime | No | MIME type of the media (e.g. image/png, audio/wav, text/plain) | |
| tags | No | Tags for organizing and filtering |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| media_url | No | Public URL of the media to check | |
| media | No | Base64-encoded media content to check | |
| tags | No | Tags to scope the detection to | |
| tier | No | Detection depth — controls thoroughness vs speed. Default: quick |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| content_ids | Yes | UUIDs of your registered media to test against the suspect model | |
| suspect_model | Yes | Identifier or name of the AI model suspected of training on your content | |
| method | No | Inference method. Default: combined | |
| tags | No | Tags for organizing and filtering |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | Your account UUID | |
| start_date | No | Filter events from this ISO 8601 date (inclusive) | |
| end_date | No | Filter events until this ISO 8601 date (inclusive) | |
| type | No | Filter by event type | |
| tags | No | Comma-separated tags to filter by |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | UUID of the media asset |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | UUID of the media asset |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by algorithm category | |
| media_type | No | Filter by supported media type |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor from a previous response | |
| limit | No | Results per page (1-100, default: 20) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor from a previous response | |
| limit | No | Results per page (1-100, default: 20) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| media_url | No | Public URL of the media file to protect | |
| media | No | Base64-encoded media content (alternative to media_url) | |
| text | No | Plain text content to protect | |
| mime | No | MIME type (e.g. image/png, audio/wav, text/plain) | |
| level | No | Protection level: standard (fast, good protection) or maximum (slower, strongest protection). Default: standard | |
| tags | No | Tags for organizing and filtering | |
| webhook_url | No | URL to receive a POST when the job completes | |
| filename | No | Original filename for human-readable output naming |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| media_url | No | Public URL of the media to register | |
| media | No | Base64-encoded media content to register | |
| mode | No | Protection level. Default: standard | |
| expires_at | No | ISO 8601 datetime when this registration expires | |
| tags | No | Tags for organizing and filtering |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| algorithms | Yes | Algorithm IDs to run (e.g. ['nightshade', 'glaze']). Use list_algorithms to discover IDs. | |
| media_url | No | Public URL of the media file to process | |
| media | No | Base64-encoded media content (alternative to media_url) | |
| text | No | Plain text content (for text algorithms like spectra, textmark) | |
| mime | No | MIME type of the media (e.g. image/png, audio/wav) | |
| tags | No | Tags for organizing and filtering | |
| webhook_url | No | URL to receive a POST when the job completes | |
| c2pa_wrap | No | Wrap output in C2PA provenance signing (default: true) | |
| filename | No | Original filename for human-readable output naming |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| media_url | No | Public URL of the media to search for | |
| media | No | Base64-encoded media content to search for | |
| type | No | Search tier — controls depth vs speed tradeoff. Default: perceptual | |
| tags | No | Restrict search to media with these tags | |
| limit | No | Maximum results to return (1-100, default: 20) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | UUID of the media asset to update | |
| original_media_url | Yes | New URL for the original (unprotected) media file |
TDQS
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.
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.
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.
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.
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.
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.
16 tool updates
v0.1.0- First observed
check_job - First observed
delete_media - First observed
detect_ai - First observed
detect_fingerprint - First observed
detect_membership - First observed
get_billing - First observed
get_media - First observed
get_rights - First observed
list_algorithms - First observed
list_media - First observed
list_searches - First observed
protect_media - First observed
register_media - First observed
run_algorithm - First observed
search_media - First observed
update_media
TDQS
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.
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.
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.
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
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
Licensed, rights-cleared content for AI agents - verifiable license keys + EU AI Act attestation.
AI Visibility and Content Intelligence tools for Claude and MCP-compatible agents.
Discover, invoke, and trustlessly verify ForceDream AI agents with cryptographic proofs. 17 tools.
Agent-native security, trust, reliability, data and procurement tools for AI workflows.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceExposes 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.21MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to analyze images, videos, audio, and text files for AI-generated content using the Reality Defender API, with support for user file uploads and direct URL analysis.1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to access comprehensive sports data including football, basketball, American football, and hockey leagues via 11 tools, with no API key required.MIT
- AlicenseAqualityCmaintenanceEnables capturing evidence, retrieving platform takedown processes, and drafting DMCA/legal notices for content removal, using the Official AI API.4Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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