Skip to main content
Glama
rchanllc

PicDefense.io MCP Server

by rchanllc

PicDefense.io MCP Server

A Model Context Protocol server for the PicDefense.io API — let AI agents run reverse-image risk analysis, EXIF extraction, image backlink discovery, and image content detection (face / landmark / logo / label / SafeSearch) on any image URL.

Features

  • 🔐 Per-user authentication — each connection carries its own PicDefense API token; the server holds no keys

  • 🚀 Dual transport — modern Streamable HTTP (/mcp) and legacy SSE (/sse)

  • 🧰 11 tools covering the full PicDefense API v2

  • 🐳 Docker-ready — production container behind nginx

  • 📖 Built-in docs — Swagger UI at /docs

Related MCP server: MCP Image Extractor

Tools

Tool

Description

picdefense_get_credits

Remaining account credit balance

picdefense_check_image_risk

Reverse-image risk analysis + picrisk score (core tool)

picdefense_extract_exif

Extract EXIF metadata (camera, timestamps, GPS)

picdefense_detect_face

Detect a human face in an image

picdefense_detect_landmark

Detect a recognizable landmark

picdefense_detect_logo

Detect a brand logo

picdefense_safesearch

Content-safety (adult/violence/racy/…) assessment

picdefense_find_backlinks

Find pages where an image appears

picdefense_detect_labels

Detect descriptive labels for image contents

picdefense_extract_text

Extract text from an image via OCR

picdefense_detect_watermark

Detect a visible stock/photographer watermark (source + confidence)

All image tools take a single url (a public http/https image URL). Most tools consume account credits per call — use picdefense_get_credits to check your balance.

Authentication

Every request authenticates with your PicDefense API token, which is your user id and API key joined by a colon:

USERID:APIKEY

Find both in your PicDefense.io account settings: https://app.picdefense.io/?returnUrl=https://app.picdefense.io/dashboard/settings

The token is sent as the X-API-TOKEN header to the API (https://app.picdefense.io/api/v2).

Quick start

The hosted server runs at https://mcp.picdefense.io. Add it to Claude Code:

# Streamable HTTP (recommended)
claude mcp add -t http picdefense "https://mcp.picdefense.io/mcp" \
  --header "X-API-Token: USERID:APIKEY"

# or SSE
claude mcp add -t sse picdefense "https://mcp.picdefense.io/sse?token=USERID:APIKEY"

Quick HTTP smoke test:

curl -X POST https://mcp.picdefense.io/mcp \
  -H "Content-Type: application/json" \
  -H "X-API-Token: USERID:APIKEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Claude Desktop (hosted)

Claude Desktop launches MCP servers as local commands, so reach the hosted server through the mcp-remote bridge (requires Node.js installed). See claude_desktop_config.example.json:

{
  "mcpServers": {
    "picdefense": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.picdefense.io/sse?token=YOUR_USERID:YOUR_APIKEY"
      ]
    }
  }
}

Edit your claude_desktop_config.json (Settings → Developer → Edit Config), add the mcpServers block above with your USERID:APIKEY, then fully quit and reopen Claude Desktop.

Testing against a plain-HTTP server (e.g. http://<host>:6910) instead of HTTPS? mcp-remote blocks non-HTTPS origins unless the host is localhost — append "--allow-http" to the args array, or reach it over an SSH tunnel to localhost.

Local (stdio) via npx — no clone needed

Run the published package directly. Requires Node.js installed.

{
  "mcpServers": {
    "picdefense": {
      "command": "npx",
      "args": [
        "-y",
        "@picdefenseio/mcp-server",
        "--api-token",
        "USERID:APIKEY"
      ]
    }
  }
}

You can also pass the token via the PICDEFENSE_API_TOKEN env var instead of --api-token.

Local (stdio) from source

Clone and build, then point Claude Desktop at the built entry point:

git clone https://github.com/rchanllc/picdefenseio-mcp-server.git
cd picdefenseio-mcp-server
npm install
npm run build

Then use "command": "node" with "args": ["/absolute/path/to/dist/index.js", "--api-token", "USERID:APIKEY"].

Configuration

Variable

Default

Description

PICDEFENSE_API_TOKEN

USERID:APIKEY (stdio only; hosted server reads it per-connection)

PICDEFENSE_API_BASE_URL

https://app.picdefense.io/api/v2

API base URL

PORT

6910

Hosted server listen port

Running the hosted server

Development

npm run dev:sse        # tsx watch, auto-reload

Production (Docker)

# via docker compose
docker compose up --build -d

# or the helper script (handles build + health check)
./deploy.sh

The container is named picdefenseio_mcp and listens on port 6910.

HTTP endpoints

Method

Path

Purpose

GET

/health

Health check (used by Docker + CI)

GET

/api/info

Server + transport info

GET

/tools

List available tools

GET

/docs

Swagger UI for the underlying API

GET

/sse?token=USERID:APIKEY

Open an SSE MCP session

POST

/messages?sessionId=<id>

SSE session message channel

POST

/mcp

Streamable HTTP MCP (header X-API-Token)

Self-hosting

There is no CI/CD in this repo — host it yourself. On your server:

git clone https://github.com/rchanllc/picdefenseio-mcp-server.git
cd picdefenseio-mcp-server
docker compose up --build -d      # or: ./deploy.sh

The container is named picdefenseio_mcp and listens on 6910. To update, git pull and re-run docker compose up --build -d.

Front it with nginx at https://mcp.picdefense.io127.0.0.1:6910 (proxy_buffering off and a long read timeout are recommended for the /sse path).

Architecture

┌──────────────┐    ┌────────────────────────┐    ┌─────────────────────────┐
│  MCP Client  │───▶│  PicDefense MCP Server │───▶│  PicDefense.io API v2   │
│ (Claude etc.)│    │      (port 6910)       │    │ app.picdefense.io/api/v2│
└──────────────┘    └────────────────────────┘    └─────────────────────────┘
        token (USERID:APIKEY) forwarded as X-API-TOKEN ───────────▶

Each connection builds its own API client + MCP server bound to the caller's token, so the service is multi-tenant and stateless with respect to credentials.

License

MIT — see LICENSE.

Available Tools

11 tools
picdefense_check_image_riskAInspect

Run PicDefense's core image-risk analysis on an image URL. Returns reverse-image-search findings and a "picrisk" score indicating how widely / riskily the image appears online.

This is the primary tool for assessing whether an image has been misused or scraped. Consumes account credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly accessible image URL to analyze (http/https), e.g. https://example.com/photo.jpg

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses a key behavioral trait: 'Consumes account credits,' which is important side-effect information. It also clarifies the nature of the output (reverse-image-search findings and risk score). There is no contradiction with annotations since none exist.

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 action and expected output. The second sentence adds positioning and cost without redundancy. Every word earns its place.

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

Completeness5/5

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

For a single-parameter tool with no output schema, the description covers the tool's purpose, return value, primary use case, and cost implication. This is sufficiently complete for an agent to decide when and how to invoke 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?

The schema already provides full coverage for the single 'url' parameter, including format and an example. The description adds no additional parameter-specific guidance beyond calling it an 'image URL,' so the baseline score of 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 uses a specific verb 'Run' and clearly identifies the resource ('image URL'). It states the return value ('reverse-image-search findings and a "picrisk" score') and positions the tool as the 'primary tool' for assessing image misuse/scraping, which distinguishes it from sibling image-analysis tools like detect_face or extract_exif.

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 explains when to use this tool: 'This is the primary tool for assessing whether an image has been misused or scraped.' It also adds a practical consideration ('Consumes account credits'). However, it does not explicitly mention alternatives or when NOT to use it, so it falls short of a 5.

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

picdefense_detect_faceAInspect

Detect whether an image contains a human face. Consumes account credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly accessible image URL to analyze (http/https), e.g. https://example.com/photo.jpg

TDQS

A4/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 burden. It discloses a key behavioral trait: 'Consumes account credits.' However, it does not mention return format, error behavior, or rate limits, and only implies a read-only operation via the verb 'detect.'

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 primary purpose, followed by a concise cost warning. No filler or repetition.

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 simple one-parameter tool, the description covers purpose and an important side effect (credits). There is no output schema, so the return value is only implied ('whether'), but this is acceptable for a boolean-style detection tool. Missing error/edge-case details prevent a 5.

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 coverage is 100% and the parameter description is already detailed (format, example). The description adds no extra semantics beyond confirming that the image is analyzed for faces, which is not necessary given 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 uses a specific verb ('detect') and clearly identifies the resource ('whether an image contains a human face'). This distinguishes it from sibling tools such as picdefense_detect_logo and picdefense_detect_landmark.

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 gives clear context for when to use this tool: when you need to determine if an image contains a human face. It does not explicitly mention alternatives or when not to use it, but the purpose is unambiguous.

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

picdefense_detect_labelsAInspect

Detect descriptive labels for the contents of an image (objects, scenes, concepts). Consumes account credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly accessible image URL to analyze (http/https), e.g. https://example.com/photo.jpg

TDQS

A3.7/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. It does disclose an important behavioral trait: 'Consumes account credits,' which indicates a cost/limit impact. However, it omits other behavioral details such as return format, whether the operation is read-only, or potential failure modes, leaving the agent with partial transparency.

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 exactly two sentences, front-loaded with the core purpose and followed by a crucial cost caveat. Every word earns its place; there is no redundancy or filler.

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?

For a simple one-parameter tool, the description covers purpose and the credit cost, but with no output schema, it fails to mention what the response contains (e.g., labels, confidence scores). This missing information is relevant for an agent deciding how to use the result, so the description is adequate but not fully 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?

The input schema already covers the single parameter with a clear description: 'Publicly accessible image URL to analyze (http/https).' Since schema coverage is 100%, the tool description need not repeat this; it adds no additional parameter-level meaning. The baseline of 3 applies.

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 uses the specific verb 'Detect' and names the resource 'descriptive labels for the contents of an image,' with explicit scope '(objects, scenes, concepts).' This clearly distinguishes it from sibling tools like picdefense_detect_face, picdefense_detect_landmark, and picdefense_detect_logo, which target more specific entities.

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 through its general-purpose label detection but does not explicitly state when to prefer this tool over alternatives, nor does it mention exclusions or provide alternative tool recommendations. It says what the tool does but not when it's the best choice.

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

picdefense_detect_landmarkAInspect

Detect whether an image contains a recognizable landmark (and where). Consumes account credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly accessible image URL to analyze (http/https), e.g. https://example.com/photo.jpg

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses that the tool 'Consumes account credits,' which is an important operational trait. However, it does not explain error handling, image format constraints, or the precise return structure beyond 'and where,' leaving gaps.

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 short sentences: the first states the purpose, the second notes credit consumption. Every word serves a function, and the main action is front-loaded.

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?

For a single-parameter tool with no output schema, the description covers the core purpose and cost but lacks usage context, detailed output semantics, and limitations. It is minimally adequate but not comprehensive.

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% coverage for the url parameter, including format and example. The description adds no extra meaning about parameters, so it stays at the baseline score.

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 function: 'Detect whether an image contains a recognizable landmark (and where).' This provides a specific verb and resource, distinguishing it from sibling tools like detect_face and detect_logo by focusing on landmarks.

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?

No guidance is given on when to use this tool versus alternatives. There is no mention of use cases, exclusions, or references to sibling tools. The note about consuming credits is a constraint, not usage direction.

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

picdefense_detect_watermarkAInspect

Detect a visible stock/photographer watermark in an image. Returns whether one was detected, a confidence score, and the identified source (e.g. a stock agency, "photographer", or "copyright"). Consumes account credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly accessible image URL to analyze (http/https), e.g. https://example.com/photo.jpg

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds useful context by stating the tool consumes account credits, limits detection to visible watermarks, and lists return values (detection flag, confidence score, source). However, it omits details about error handling, edge cases, or any limitations beyond "visible," leaving some operational transparency gaps.

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, purpose first, then output and cost. Every sentence adds value with no unnecessary words, achieving high conciseness and clear front-loading.

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 tool with no output schema, the description sufficiently covers the output fields and cost. It could improve by hinting at when to use it (e.g., checking credits via get_credits first), but the essential practical details are present. The omission of error/edge-case behavior is minor given the tool's simplicity.

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 fully describes the only parameter (url) with a clear description and example. The tool description does not add extra semantic detail about the parameter, so it relies entirely on the schema. Baseline 3 applies given 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 uses a specific verb and resource: "Detect a visible stock/photographer watermark in an image." This clearly distinguishes it from sibling tools like picdefense_detect_logo or picdefense_detect_face by the unique task of watermark detection.

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 provides context by specifying the watermark type (visible stock/photographer) and notes that it consumes account credits, implying a cost consideration. However, it does not explicitly state when to use this tool versus alternatives such as detect_logo or provide exclusions, so the guidance is partially implied but not fully explicit.

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

picdefense_extract_exifAInspect

Extract EXIF metadata (camera, timestamps, GPS, etc.) embedded in an image at the given URL. Consumes account credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly accessible image URL to analyze (http/https), e.g. https://example.com/photo.jpg

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses that the operation consumes account credits, which is valuable behavioral information. However, it doesn't mention return format, potential failures (e.g., no EXIF data), or any other effects.

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 concise sentence that front-loads the core action, includes examples of metadata types, and adds a credit-cost warning without unnecessary fluff.

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 simple one-parameter tool with no output schema, the description covers the main purpose, input requirements, and a non-obvious side effect (credit consumption). It lacks return-value details but is reasonably complete for tool selection and invocation.

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 fully describes the only parameter 'url' with a clear example. The description adds no additional parameter-level meaning, so the baseline score of 3 applies due to 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 uses a specific verb ('Extract') and identifies a clear resource ('EXIF metadata embedded in an image at the given URL'). It clearly distinguishes this tool from siblings like face detection or text extraction.

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 context is clear: use when you need EXIF metadata from a publicly accessible image URL. It doesn't explicitly name alternatives or exclusions, but the tool's purpose is unambiguous relative to its siblings.

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

picdefense_extract_textAInspect

Extract text from an image via OCR. Returns the detected full text, individual words, and a "truncated" flag (text is capped for very text-dense images). Consumes account credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly accessible image URL to analyze (http/https), e.g. https://example.com/photo.jpg

TDQS

A4/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It discloses the truncated flag for text-dense images and the fact that it consumes account credits, which are useful behavioral details. However, it omits error handling, rate limits, or authentication requirements, preventing a perfect score.

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 primary action, and every sentence adds value (return structure, truncation, cost). No redundant or filler content.

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 one-parameter tool with no output schema, the description thoroughly covers the return values and a key side effect (credit consumption). Minor gaps such as supported image formats or size limits prevent a top score, but overall it is quite 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?

The schema already documents the single 'url' parameter completely (100% schema description coverage), so the description need not add parameter-level detail. It neither adds nor detracts from the schema, so it meets the baseline of 3.

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 extracts text from an image via OCR, and explicitly lists the output components (full text, individual words, truncated flag). This distinguishes it from sibling tools like detect_face or detect_labels, which serve different image-analysis purposes.

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 use for OCR text extraction, but gives no explicit guidance on when to choose this tool over siblings, nor any exclusions or alternative recommendations. The usage context is clear from the verb 'extract' but not explicitly elaborated.

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

picdefense_get_creditsAInspect

Get the remaining credit balance on your PicDefense.io account.

Most analysis tools consume credits per call — check this first if calls start failing with "insufficient credits".

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It adds useful behavioral context by explaining that other analysis tools consume credits, implying this tool is a read-only balance check. It does not explicitly state 'does not consume credits', but the framing makes that clear enough for this simple getter.

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?

Two sentences only. The first sentence is a front-loaded purpose statement, the second adds a practical usage hint. No wasted words; every sentence earns its place.

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

Completeness5/5

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

For a zero-parameter, read-only balance retrieval tool with no output schema, the description fully covers what the agent needs to know: what the tool does and when to use it. The sibling context and credit-consumption note provide a complete mental model for this simple tool.

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?

The tool has zero parameters, so the baseline is 4. The description correctly avoids fabricated details about parameters. It adds no semantic noise, and the empty schema is consistent with the description.

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 function with a specific verb and resource: 'Get the remaining credit balance on your PicDefense.io account.' This unambiguously distinguishes it from the sibling image analysis tools, making it immediately clear that this is an account utility, not an analysis tool.

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?

Provides explicit usage context: 'check this first if calls start failing with "insufficient credits"'. This tells the agent exactly when to invoke it, covering a common failure mode. No alternatives are needed as it is a unique utility among the siblings.

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

picdefense_safesearchAInspect

Assess the content safety of an image (adult, violence, racy, medical, spoof likelihoods) via SafeSearch. Consumes account credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublicly accessible image URL to analyze (http/https), e.g. https://example.com/photo.jpg

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses that the tool consumes account credits, which is a useful behavioral trait absent from annotations. However, it does not state whether the operation is read-only, potential failure modes, or what happens to the image, leaving gaps given no annotations.

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 sentence that conveys purpose and a key behavior without redundancy. The typo 'adlult' is a minor quality issue but does not affect structure.

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?

The description lists the safety categories assessed, which implicitly covers expected output fields, and mentions credit consumption. However, it does not explicitly describe the return format or any prerequisites, which would be needed given no output schema.

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 fully documents the url parameter with 100% coverage, so the description adds no additional parameter semantics. The description's mention of 'image' aligns with the url parameter but adds no new detail.

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 function: assessing image content safety for categories like adult, violence, racy, medical, and spoof, using SafeSearch. This is a specific verb-resource pair and distinguishes it from siblings like face detection or text extraction.

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 the tool is for content safety assessment but provides no explicit guidance on when to use it over alternatives such as picdefense_check_image_risk. It does not mention exclusions or alternatives.

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. 11 tool updatesv1.0.1
    • First observedpicdefense_check_image_risk
    • First observedpicdefense_detect_face
    • First observedpicdefense_detect_labels
    • First observedpicdefense_detect_landmark
    • First observedpicdefense_detect_logo
    • First observedpicdefense_detect_watermark
    • First observedpicdefense_extract_exif
    • First observedpicdefense_extract_text
    • First observedpicdefense_find_backlinks
    • First observedpicdefense_get_credits
    • First observedpicdefense_safesearch

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct aspect of image analysis: risk, EXIF, faces, landmarks, logos, content safety, backlinks, labels, OCR, watermark, and credits. The descriptions clearly delineate overlapping concepts like reverse-image-search findings vs. dedicated detection tools, so an agent can unambiguously select the right one.

Naming Consistency4/5

All tool names follow the 'picdefense_<verb_noun>' pattern (e.g., extract_exif, detect_face, find_backlinks) with a consistent prefix, but 'safesearch' deviates as a single compound noun rather than a verb_noun construction. This minor inconsistency does not hinder readability.

Tool Count5/5

With 11 tools, the server achieves a well-scoped balance—enough to cover the full spectrum of image risk and detection features without overwhelming the agent. Each tool earns its place and there is no apparent bloat.

Completeness5/5

The tool surface comprehensively covers the image-risk domain: credit management, core risk scoring, EXIF, face/landmark/logo/watermark detection, content safety, backlinks, labels, and OCR. No obvious lifecycle or analytical gaps exist for typical use cases.

Maintenance

ActivityStale
ResponsivenessNo issues

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

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/rchanllc/picdefenseio-mcp-server'

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