Skip to main content
Glama

score_aesthetics

Evaluate visual aesthetics of photographs, focusing on lighting, composition, and clarity, independent of subject matter. Compare two images to determine which is more aesthetically pleasing.

Instructions

Rate how aesthetically pleasing an image looks, independent of its content.

Uses a CLIP-based predictor trained on human aesthetic ratings (the LAION "improved aesthetic predictor"). Reflects visual qualities like lighting, composition and clarity — not whether the subject matter is correct or matches a prompt. A technically accurate but flatly-lit, cluttered photo can score low; a blurry but beautifully lit one can score comparatively higher.

In v0.8.0, the returned payload is enriched. The legacy score is duplicated as photographic_aesthetic. If a Reasoner is configured at the server level, an artistic_judgment is generated. If the server is installed with the [iqa] extra, a technical_quality score (0-100) is included via the MUSIQ ONNX model.

Returns one {"score": float, "rating": str} object per page/image. score is roughly on a 1-10 scale; rating buckets it coarsely for quick triage — read score for anything comparative.

Its training set was photographic, so it rates photographs, not fine art: celebrated paintings and illustrations score middling (Hokusai's "The Great Wave" comes back around 5.8) without that meaning anything is wrong with them. Use it to compare like with like — several shots of the same subject, or successive edits of one image — and do not read a single absolute score as a verdict on quality.

Set style_context=true to also get the medium the score is being read in. The CLIP backbone (already loaded for scoring) classifies the image as a photograph, oil painting, digital illustration, etc., and that style plus its style_distribution are added to each result. This is the local-model answer to the photography bias: it doesn't make the head understand fine art, but it tells you that the score is for a non-photographic medium, so you read it with the documented caveat instead of as an absolute verdict.

Set compare_with to a reference image to switch to relative mode: both images are scored and the result becomes one entry per image page carrying {image, reference, delta, preferred}, with preferred being "image" / "reference" / "tie" (tie when |delta| < 0.05). This is the predictor's calibrated use -- like-with-like comparison -- so it sidesteps the absolute photography bias that makes a single score misleading across media. With style_context=true, both media are classified and a cross_medium_warning is added when they differ (cross-medium comparison is out of calibrated scope). The absolute score is not recalibrated; the relative delta is the actionable output.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
srcYesLocal file path or http(s) URL of the image to process. PDFs are also accepted and are rendered one image per page, so tools that return a list return one entry per page.
compare_withNoPath or URL of a reference image to compare against. The predictor's documented valid use is like-with-like comparison (edits of one image, or several shots of one subject), so this routes you there instead of a single bias-affected absolute number: both images are scored and the result carries the per-image scores, the `delta`, and `preferred` ('image'/'reference'/'tie', tie when |delta| < 0.05). With style_context=true, both media are classified and a `cross_medium_warning` is added when they differ (cross-medium comparison is out of calibrated scope). Each image page is compared to the first page of the reference. Omit (default) for the original single-image scoring shape.
style_contextNoWhen true, also classify the image's medium/genre (photograph, oil painting, digital illustration, ...) using the already-loaded CLIP backbone, and return it alongside the score. The aesthetic head was trained on photographs, so a non-photographic medium is the context the score must be read in -- an oil painting scoring ~5.8 is not 'wrong'. Default false keeps the original {score, rating} shape; true adds {style, style_distribution} to each result.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.8.2

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden, and it delivers thoroughly. It discloses the CLIP-based model, the photographic training bias, version-dependent payload changes, the tie threshold of |delta| < 0.05, and the cross_medium_warning behavior. There is no contradiction with any annotation, and no surprising side effects are hidden.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the core purpose, then moves through output, bias, and parameters. It is longer than necessary and repeats some parameter details that the schema already states, but every paragraph contributes a distinct piece of calibration or behavioral context.

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 tool with three parameters, two optional modes, model-specific caveats, and version-dependent output, the description is complete. It covers the output shape, score scale, photography bias, fine-art caveat, comparison semantics, style classification, and version-specific payload enrichment. An agent selecting or invoking this tool has everything it needs.

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 100%, so the baseline is 3, but the description adds conceptual rationale beyond the schema: compare_with is framed as the calibrated like-with-like route around photography bias, and style_context is framed as the answer for non-photographic media. The added value is real but modest because the schema parameter descriptions are already unusually rich and largely overlap with the prose.

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 opens with a specific verb-plus-resource statement: "Rate how aesthetically pleasing an image looks, independent of its content." It explicitly scopes out content correctness and prompt matching, which distinguishes it from content-focused siblings like caption or detect_objects. It also signals the output shape and the two optional modes, making the tool's identity unmistakable.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: compare like with like, such as several shots of the same subject or successive edits of one image. It also gives explicit when-not-to-use guidance: do not read a single absolute score as a quality verdict, and do not expect meaningful ratings for fine art. This is stronger than a typical 4 because it actively steers the agent away from common misuses.

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