Skip to main content
Glama

Tanod MCP Server (Deprecated)

This connector has been deprecated

The correct URL is https://tanod.dev/mcp and NOT https://tanod.dev/mcp/ (CORRECT: NO TRAILING SLASH)

Correct Glama listing: https://glama.ai/mcp/connectors/dev.tanod/tanod

WRONG Glama listing: https://glama.ai/mcp/connectors/dev.tanod/tanod-mcp-server/

imagepeek: perceptual hashes of an image (compare two images)

image_hash
Read-onlyIdempotent

imagepeek: Compute perceptual hashes of an image, optionally compared. To group duplicates among up to 100 images use image_dedupe. Returns perceptual hashes of an image (aHash, dHash, pHash, wHash; 64 or 256 bits, imagehash-compatible) and, with a second image (compare_url or compare_base64), the Hamming distance and similarity per algorithm and likely_same (pHash distance at most bits / 6). A near-duplicate check, not proof that two images are or are not the same. With a second image the request body may be up to twice the single-image cap. Reads PNG, JPEG, WebP, GIF, TIFF, BMP, ICO and AVIF; other formats and images over 40 megapixels are refused (not charged). Images are never logged or stored. Typically 0.5-2 s. Price: USD 0.002. Free: 3 imagepeek calls per IP per UTC day. Docs: https://tanod.dev/learn/image-perceptual-hash-api.html

Input Schema

NameRequiredDescriptionDefault
urlNoPublic http(s) URL of the image (at most 10 MB; private, internal and IP-literal hosts are refused); or use image_base64.
hash_sizeNoHash grid: 8 (64-bit hashes, default) or 16 (256-bit).
algorithmsNoDefault: all four.
auto_orientNoApply the EXIF orientation first (default true).
compare_urlNoA second image to compare (or compare_base64).
image_base64NoThe image as standard or url-safe base64 (at most 10 MB decoded; a data:image/...;base64, prefix is fine); or use url.
compare_base64NoA second image as base64 (at most 10 MB decoded; or compare_url).

Output Schema

NameRequiredDescriptionDefault
bitsNo
errorNoOnly on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object.
inputNo
notesNo
hashesNo
sourceNo
compareNo
final_urlNo
operationNo
source_urlNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / compare / properties / final_url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / compare / properties / hashes
      Added value: +{
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / compare / properties / input
      Added value: +{
      +  "properties": {
      +    "animated": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "bytes": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "format": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "frames": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "has_alpha": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "height": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "width": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / compare / properties / source_url
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: supported formats, a 40-megapixel refusal threshold, the fact that refused requests are not charged, the doubled request-body cap when comparing, no logging or storage of images, expected latency (0.5-2 s), price and a free tier of 3 calls per IP per UTC day. These are exactly the operational facts an agent needs before spending money or retrying.

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

Conciseness4/5

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

Purpose and the sibling diversion come first, then return shape, then limits and pricing, so it is well front-loaded. It is a single dense paragraph with some run-on clauses, but virtually every clause carries unique information, so little is wasted.

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 7-parameter, comparison-capable image tool with an output schema, it covers formats, size limits, cost, rate limits, timing and the meaning of the similarity verdict. Nothing an agent needs to invoke it correctly or interpret the comparison result is missing.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3, but the description adds semantics the schema does not: that compare_url and compare_base64 are alternates for the same second image, and what the comparison branch yields (Hamming distance and similarity per algorithm, plus likely_same defined as pHash distance at most bits/6). That threshold definition is genuinely additive rather than a restatement.

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?

Specific verb and resource ('Compute perceptual hashes of an image'), plus the optional comparison mode, named algorithms (aHash, dHash, pHash, wHash) and bit widths. It also explicitly distinguishes itself from the sibling image_dedupe, so an agent can select without opening either schema.

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?

Explicitly routes bulk duplicate grouping to image_dedupe ('up to 100 images') and confines this tool to single-image hashing plus pairwise comparison. It also sets expectations with 'A near-duplicate check, not proof that two images are or are not the same', which tells the agent how much weight to put on the result.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources