Skip to main content
Glama
aiexp1

Tanod MCP server

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

image_hash
Read-onlyIdempotent

Compute perceptual hashes (aHash, dHash, pHash, wHash) of an image. Optionally compare two images using Hamming distance to detect near-duplicates.

Instructions

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

TableJSON 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

TableJSON 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. First observedv0.3.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds substantial non-annotation behavior: supported/refused formats, the 40MP refusal (not charged), 'Images are never logged or stored', latency 0.5-2 s, price USD 0.002, and a 3-call/day free quota. It also bounds the request size when a comparison image is supplied. This is unusually rich disclosure.

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 purpose and the sibling routing are front-loaded in the first sentence, followed by return shape, limits, and cost. It is long but every clause carries operational facts (thresholds, caps, formats, pricing) rather than filler.

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?

A 7-parameter tool with an output schema, and the description covers everything an agent still needs: which parameter combinations are valid, the pairwise comparison output semantics, refusal conditions, cost, and rate limits. Nothing material for correct invocation 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 description coverage is 100%, so the baseline is 3. The description still adds meaning above the schema by explaining the comparison contract: a second image via compare_url/compare_base64 yields Hamming distance and similarity per algorithm plus likely_same defined as pHash distance at most bits/6, and that supplying it can double the body cap.

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?

States a specific verb and resource ('Compute perceptual hashes of an image, optionally compared') and explicitly names the sibling it is not for bulk work ('To group duplicates among up to 100 images use image_dedupe'). An agent can distinguish it from image_dedupe and image_blurhash without opening a 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?

Gives an explicit alternative and the condition that selects it ('To group duplicates among up to 100 images use image_dedupe'), plus a clear framing of the use case ('A near-duplicate check, not proof that two images are or are not the same'). This routes the agent correctly between single-pair hashing and batch dedup.

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

Deploy Server

Other Tools