Skip to main content
Glama
Pexafy

Pexafy MCP Server

Official

Server Quality Checklist

83%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.4.11

  • Disambiguation4/5

    Each tool has a clearly documented input type (text query vs. image/file vs. previous photo_id), and the descriptions are explicit about which phrase or condition triggers each tool. However, search_photos_by_image and get_similar_photos both produce visually similar photos, and their boundary (one tweaks by text, the other just fetches similar) could occasionally mislead an agent even with the detailed guidance.

    Naming Consistency4/5

    All names follow a snake_case verb_noun pattern (search_photos, search_photos_by_image, get_similar_photos), and the shared 'search_photos' prefix on two tools is helpful. The slight deviation is 'get' in get_similar_photos versus 'search' elsewhere for the same core concept, but the pattern is otherwise uniform and predictable.

    Tool Count4/5

    Three tools is a lean but sensible footprint for a dedicated photo-search server, covering the natural query modalities (text, image, similar-by-id). While each tool does earn its place, the set feels slightly minimal—no dedicated tool for fetching individual photo details, but results already carry URLs and attribution, so it works.

    Completeness4/5

    The core workflow is complete: text query → results → similar-by-photo_id, and image query → results with tweakable text, covering the main stock-photo search use cases with no dead ends. Minor gaps exist (no downloadable/collections/curated feed support, no orientation/filter parameters), but agents can work around these with richer natural-language calls to search_photos.

  • Average 4.6/5 across 3 of 3 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 40 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • This repository includes a glama.json configuration file.

  • This server has been verified by its author.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

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

    Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral context: the result includes inline thumbnails as an MCP App resource, and warns that some clients (like claude.ai on web) render them only in an expandable panel, with URLs still available. This goes beyond annotations and is valuable for the agent.

    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 relatively lengthy but every paragraph serves a purpose: it explains when to use, prerequisites, how users refer to photos (critical for agent understanding), and display behavior. It is front-loaded with the primary usage trigger and then provides necessary details. Slightly verbose but justified by the need to explain the rank vs. photo_id distinction.

    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 tool has an output schema, so return values are covered there. The description compensates for the complexity of the tool by explaining the relationship between rank and photo_id, which is not obvious from the schema. It also addresses pagination and resource rendering behavior. Given the moderate complexity and presence of output schema, this is adequately complete, though more details on what 'similar' entails could be added.

    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%, with both parameters (photo_id and cursor) described in the schema. The description reinforces the use of photo_id (requires it from a prior search) and explains the cursor's role (pass pagination.next_cursor), but adds minimal additional semantics beyond the schema. Baseline 3 is appropriate given full 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 clearly states it finds similar photos based on a photo_id, distinct from sibling search tools by focusing on similarity rather than keywords or image upload. It explicitly ties to user phrases like 'find something similar', making its purpose actionable.

    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?

    It explicitly explains when to use the tool ('when the user says...'), specifies the prerequisite (photo_id from a previous search), and details how a person refers to photos (by rank) versus the identifier, which prevents misuse. It also clarifies how to use the cursor for pagination.

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

  • Behavior4/5

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

    Annotations already declare readOnly and idempotent, so the description doesn't need to repeat that. It adds meaningful context beyond annotations: the image_file is host-populated rather than caller-set, image_base64 is unavailable to chat assistants, and every result carries an attribution to display. No contradictions.

    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 long but every section earns its place—it covers usage, input methods, edge cases, and attribution. The numbered list of image-providing options is clear and well-structured. It could be slightly trimmed, but the density is justified by the tool's complexity.

    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?

    Given the 12 parameters, 100% schema coverage, and an output schema, the description provides all necessary behavioral context: how to provide the reference image, the host-filling behavior of image_file, the text weighting mechanism, and the fallback to search_photos. It also mentions the attribution requirement from results, which is not in the schema.

    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 schema already documents each parameter. The description adds practical nuance beyond the schema, such as how text_alpha weights text against image, and the guidance to put any modification in q. This exceeds the baseline for fully covered schemas.

    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 finds visually similar stock photos from an example image, optionally tweaked with words. It explicitly distinguishes from siblings by providing a usage scenario ('find photos LIKE THIS but <change>') and names the alternative (search_photos) when the image can't be sent.

    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 when-to-use guidance with examples and a concrete fallback: when the image has no URL and no auto-provided file, use search_photos instead. It also explains the three ways to supply the reference image and which is appropriate for different clients.

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

  • Behavior5/5

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

    The annotations already declare a safe, read-only, idempotent operation, so the description's job is to add context beyond that. It does: semantic search behavior, result-field semantics (rank, photo_id, attribution, urls), the inline-thumbnail MCP resource, and the rendering caveat on claude.ai. No contradiction with annotations.

    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 long, but it is front-loaded with the primary use case and every section earns its place: query style, examples, sibling distinction, result fields, and rendering behavior. A few example queries could be trimmed without losing meaning, which keeps it from a 5.

    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 10 optional parameters, an output schema, and two siblings, the description is complete: it explains semantic querying, when to use each sibling, what each result field means, and how the inline resource may render. The output schema covers return values, so the description correctly focuses on selection and invocation behavior.

    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 and the schema already documents every parameter. The description adds real value by teaching the core q semantics, showing strong example queries, and explaining how photo_id connects to the similar-photos sibling, but it does not need to repeat 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 opens with a specific use case ('user needs an image, photo, or visual') and names the resource being searched. It clearly differentiates this text-query tool from search_photos_by_image, which is the main sibling it could be confused with.

    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?

    It gives explicit when-to-use guidance ('Prefer this tool over search_photos_by_image when the user describes what they want in words') and names the alternative with the exact input it needs. It also handles the edge case of a reference image with no URL, telling the agent to describe it in rich detail instead.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

pexafy-mcp MCP server

Copy to your README.md:

Score Badge

pexafy-mcp MCP server

Copy to your README.md:

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/Pexafy/pexafy-mcp'

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