image-metadata-embed-and-report
Seamless cloud storage processing for image metadata embedding and retrieval using Supabase Storage.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@image-metadata-embed-and-reportembed lifestyle metadata for restaurant_scene.png"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Image Metadata Embed and Report
A streamlined MCP server for XMP metadata embedding with beautiful formatting and smart filename indicators. Features professional XMP display and automatic "_me" suffix for processed images.
⨠Features
ā
Beautiful XMP Formatting: Clean, aligned metadata display without technical prefixes
ā
Smart "_me" Filename Suffix: Instant visual indicator for metadata-enhanced images
ā
š Category-Based Reports: Metadata organized by natural categories with analysis type headers
ā
šÆ Analysis Type Identification: Clear "LIFESTYLE/PRODUCT/ORBIT" headers in all reports
ā
5 Core Tools: embed, read, validate, create_xmp, create_metadata_report with improved UX
ā
Stream Processing: Memory-only image processing, no local files
ā
Multi-Schema Support: Lifestyle, Product, and Orbit schemas
ā
Supabase Integration: Seamless cloud storage processing
ā
TypeScript: Full type safety and modern development
ā
Zero Setup: Single build command, immediate productivity
Related MCP server: universal-image-mcp
Quick Start
1. Install Dependencies
npm install2. Set Environment Variables
Copy the example environment file and configure your Supabase credentials:
cp .env.example .envEdit .env with your Supabase project details:
SUPABASE_URL=https://your-project-id.supabase.co
SUPABASE_ANON_KEY=your_anon_key_here
SUPABASE_BUCKET_NAME=your_storage_bucket_nameGet these values from your Supabase project dashboard at https://supabase.com/dashboard/project/_/settings/api
3. Build and Start
npm run build
npm start4. Configure Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"image-metadata-embed-and-report": {
"command": "node",
"args": ["/path/to/your/image-metadata-embed-and-report/dist/server.js"],
"env": {
"SUPABASE_URL": "https://your-project-id.supabase.co",
"SUPABASE_ANON_KEY": "your_anon_key_here",
"SUPABASE_BUCKET_NAME": "your_storage_bucket_name"
},
"description": "Image Metadata Embed and Report - XMP metadata with beautiful formatting"
}
}
}Replace /path/to/your/image-metadata-embed-and-report/ with the actual path where you cloned this repository.
⨠Enhanced Features Overview
Beautiful XMP Display
Transform technical metadata into professional, readable format:
Before:
Lifestyle marketing potential emotional hooks: Comfort, Pleasure, Well-being
Product physical characteristics primary color: Silver/GrayAfter:
emotional hooks : Comfort, Pleasure, Well-being
primary color : Silver/Gray
--- Raw JSON ---
{"lifestyle_marketing_potential_emotional_hooks": "Comfort, Pleasure, Well-being", ...}Smart Filename Suffix
All processed images automatically get "_me" suffix:
# Input ā Output
restaurant_scene.png ā restaurant_scene_me.jpg
product_photo.tiff ā product_photo_me.jpg
folder/image.png ā folder/image_me.jpgBenefits:
ā Instant visual identification of processed images
ā Preserves original file names and organization
ā Automatic format conversion for universal XMP support
Available Tools
1. embed_image_metadata (Enhanced)
Embed XMP metadata with beautiful formatting and smart filename suffix.
{
"source_path": "images/restaurant_scene.png",
"metadata": {
"scene_overview": {
"setting": "Outdoor restaurant patio",
"time_of_day": "Evening"
},
"human_elements": {
"number_of_people": 8,
"social_dynamics": "Friends enjoying dinner"
},
"marketing_potential": {
"emotional_hooks": ["Social connection", "Relaxed dining"]
}
},
"output_path": "processed/restaurant_scene.png",
"schema_type": "lifestyle"
}Enhanced Output:
š File:
processed/restaurant_scene_me.jpg(automatic suffix + conversion)⨠Beautiful XMP: Clean, aligned field display without technical prefixes
š Auto-conversion: PNG/TIFF ā JPG for universal compatibility
š Metrics: Processing time, field count, completeness score
2. read_image_metadata (Enhanced)
Extract and display metadata with beautiful formatting.
{
"image_path": "processed/restaurant_scene_me.jpg",
"format": "formatted",
"include_xmp": true
}Beautiful Output:
setting : Outdoor restaurant patio
time of day : Evening
number of people : 8
social dynamics : Friends enjoying dinner
emotional hooks : Social connection, Relaxed dining
--- Raw JSON ---
{"lifestyle_scene_overview_setting": "Outdoor restaurant patio", ...}3. validate_metadata_schema
Validate metadata against schema requirements.
{
"metadata": {
"product_identification": {
"product_type": "Console Table",
"design_style": "Minimalist"
}
},
"schema_type": "product",
"strict_mode": false
}4. create_xmp_packet
Generate standalone XMP packets.
{
"metadata": {
"scene_overview": {
"setting": "Modern office",
"activities": ["Working", "Collaboration"]
}
},
"output_path": "metadata/office_scene.xmp",
"pretty_print": true
}5. create_metadata_report (NEW!)
Generate human-readable reports from XMP metadata with category organization.
{
"image_path": "processed/restaurant_scene_me.jpg",
"format": "detailed",
"include_raw_json": true
}Category-Based Output:
šÆ TYPE OF ANALYSIS COMPLETED: LIFESTYLE
Categories Found: 8 | Total Fields: 14 | Processing Time: 4.2ms
š SCENE OVERVIEW
-----------------------------------------------------------------
Setting : Elegant restaurant interior
Time Of Day : Evening
š„ HUMAN ELEMENTS
-----------------------------------------------------------------
Number Of People: 6
Social Dynamics : Family celebration dinner
[... other organized categories ...]
=================================================================
RAW JSON DATA (Machine Readable)
=================================================================
{...complete metadata...}Three Report Formats:
detailed: Full categorized report with all metadata + raw JSON
simple: Key fields organized by category for quick review
json-only: Raw machine-readable metadata only
Supported Schemas
Lifestyle Schema (36+ fields)
Social dynamics, cultural context, and lifestyle analysis
scene_overview- Setting, time, occasion, activitieshuman_elements- Demographics, interactions, emotionsenvironment- Location, architecture, spatial arrangementmarketing_potential- Target demographics, brand alignment
Product Schema (25+ fields)
Design aesthetics and commercial product analysis
product_identification- Type, category, style, brandphysical_characteristics- Color, material, texture, dimensionscommercial_analysis- Market positioning, target market, pricingquality_assessment- Construction, materials, craftsmanship
Orbit Schema (40+ fields)
Comprehensive visual intelligence analysis
scene_overview- Setting, time, activities, moodhuman_elements- People count, age groups, interactionskey_objects- Products, technology, notable itemsatmospheric_elements- Color scheme, lighting, visual mood
Architecture
simple-orbit-mcp/
āāā src/
ā āāā server.ts # Main MCP server
ā āāā core/
ā ā āāā supabase-client.ts # Stream-based storage client
ā ā āāā xmp-processor.ts # XMP creation and embedding
ā ā āāā metadata-validator.ts # Schema validation
ā āāā tools/
ā ā āāā embed-metadata.ts # Embedding tool
ā ā āāā read-metadata.ts # Reading tool
ā ā āāā validate-schema.ts # Validation tool
ā ā āāā create-xmp.ts # XMP creation tool
ā ā āāā create-metadata-report.ts # NEW! Category-based reports
ā āāā types/
ā āāā schemas.ts # TypeScript interfaces
āāā dist/ # Compiled JavaScriptDevelopment
Build and Watch
npm run build # Compile TypeScript
npm run watch # Watch for changes
npm run dev # Development mode with tsxEnvironment Setup
# Required environment variables
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your_anon_key_here
# Optional: Use service role key for enhanced permissions
SUPABASE_SERVICE_ROLE_KEY=your_service_role_keyStream Processing Benefits
ā No Local Storage: Images never touch your hard drive
ā Memory Efficient: Process large images in RAM
ā Fast Processing: Direct memory-to-memory operations
ā Security: No local file persistence or cleanup needed
ā Scalable: Works with any Supabase Storage bucket
Example Workflows
Lifestyle Image Analysis
# 1. Validate lifestyle metadata
validate_metadata_schema({
"metadata": {
"scene_overview": { "setting": "Coffee shop", "time_of_day": "Morning" },
"human_elements": { "number_of_people": 2, "social_dynamics": "Business meeting" }
},
"schema_type": "lifestyle"
})
# 2. Embed into image
embed_image_metadata({
"source_path": "uploads/coffee_meeting.jpg",
"metadata": { /* lifestyle metadata */ },
"output_path": "processed/coffee_meeting_analyzed.jpg"
})
# 3. Verify embedding
read_image_metadata({
"image_path": "processed/coffee_meeting_analyzed.jpg",
"format": "json"
})Product Catalog Processing
# 1. Create XMP packet for product
create_xmp_packet({
"metadata": {
"product_identification": { "product_type": "Office Chair", "design_style": "Ergonomic" },
"commercial_analysis": { "target_market": ["Businesses", "Home offices"] }
},
"schema_type": "product",
"output_path": "metadata/office_chair.xmp"
})
# 2. Embed into product image
embed_image_metadata({
"source_path": "catalog/chair_001.jpg",
"metadata": { /* product metadata */ },
"output_path": "catalog/processed/chair_001_metadata.jpg"
})Category-Based Report Generation
# 1. Generate detailed categorized report
create_metadata_report({
"image_path": "processed/restaurant_celebration_me.jpg",
"format": "detailed",
"include_raw_json": true
})
# Output: Organized report with category headers:
# šÆ TYPE OF ANALYSIS COMPLETED: LIFESTYLE
# š SCENE OVERVIEW | š„ HUMAN ELEMENTS | š ENVIRONMENT
# š½ļø KEY OBJECTS | š
ATMOSPHERIC ELEMENTS | etc.
# 2. Generate simple summary report for quick review
create_metadata_report({
"image_path": "catalog/chair_001_me.jpg",
"format": "simple"
})
# Output: Condensed report showing key fields by category
# Analysis: PRODUCT (6 categories, 13 fields)
# 3. Generate JSON-only report for API integration
create_metadata_report({
"image_path": "orbit/workspace_me.jpg",
"format": "json-only"
})⨠Enhanced Features Summary
Professional XMP Display
Clean field names without schema prefixes
Aligned formatting for consistent appearance
Dual format: human-readable + machine-parseable
ExifTool compatible output
š Category-Based Reports (NEW!)
Metadata organized by natural categories (Scene Overview, Human Elements, etc.)
Clear analysis type identification (LIFESTYLE/PRODUCT/ORBIT)
Three report formats: detailed, simple, json-only
Professional formatting with emoji headers and alignment
Separated raw JSON section for machine processing
Smart Filename Management
Automatic "_me" suffix for processed images
Preserves original file organization
Format conversion for universal XMP support
Clear visual indicators of enhancement
Stream Processing
Memory-only image processing
No local file downloads or cleanup
Fast, efficient operations
Secure cloud-to-cloud processing
Dependencies
@modelcontextprotocol/sdk- MCP server framework@supabase/supabase-js- Supabase client for cloud storagesharp- High-performance image processing
Requirements
Node.js 18+
TypeScript 5+
Supabase project with Storage bucket
Valid Supabase credentials
Performance
ā Sub-5ms Processing: Ultra-fast metadata embedding
ā Memory Efficient: <256MB per request
ā Format Conversion: Automatic PNG/TIFF ā JPG optimization
ā Smart Filenames: Instant visual feedback
ā Beautiful Display: Professional XMP formatting
ā š Fast Reports: <5ms category-based report generation
ā šÆ Multi-Format: Detailed, simple, and JSON-only output formats
License
MIT License - see LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Support
If you encounter any issues or have questions, please open an issue on GitHub.
Image Metadata Embed and Report - Beautiful metadata, smart filenames, streamlined workflows
Available Tools
5 toolscreate_metadata_reportC
Generate human-readable text reports from XMP metadata embedded in images
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Report format: detailed (full report), simple (key fields), json-only (raw data) | |
| image_path | Yes | Path to image with embedded XMP metadata (e.g., "folder/image_me.jpg") | |
| output_path | No | Path where report will be saved (auto-generated if not provided) | |
| include_raw_json | No | Include raw JSON data in detailed format (default: true) | |
| include_processing_info | No | Include processing information in the report (default: true) |
TDQS
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 not disclose that the tool writes a report file to disk (via output_path), whether the source image is ever modified, or what permissions are required ā a significant gap for a tool with a filesystem side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is part of why behavioral and usage context is missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and no annotations, the description should explain the write-to-file behavior and output handling. Instead it covers only the headline purpose, leaving the agent without the context needed to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter including the format enum is documented in the schema itself, so the baseline is 3. The description adds no parameter detail beyond the schema, and actually sits in mild tension with the json-only format, which is not 'human-readable text'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and resource (human-readable text reports from XMP metadata in images), which clearly separates it from read_image_metadata and embed_image_metadata. It does not explicitly name the sibling it replaces, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance, no prerequisites, and never mentions alternatives such as read_image_metadata for simply inspecting values. An agent must infer the use case entirely from the name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_xmp_packetC
Create standalone XMP metadata packet from metadata object with validation
| Name | Required | Description | Default |
|---|---|---|---|
| metadata | Yes | Metadata object to convert to XMP format (supports lifestyle, product, and orbit schemas) | |
| output_path | No | Path to save XMP file in Supabase Storage (optional, e.g., "metadata/sample.xmp") | |
| schema_type | No | Schema type for metadata validation (auto-detected if not specified) | |
| pretty_print | No | Format XMP for readability with indentation (default: true) | |
| include_wrappers | No | Include XMP packet wrappers (default: true) |
TDQS
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 mentions 'with validation' but doesn't describe what validation happens (schema validation? error handling?), whether it writes to storage (output_path suggests side effect), what happens on validation failure, or whether it requires external services like Supabase. For a tool with an optional storage write and validation, this is a significant omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single efficient sentence with no waste, though it's a bit terse given the tool's complexity. It front-loads the core action and result. Could benefit from slightly more structure but remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with nested objects, optional storage write, validation, and no output schema, the description is incomplete. It doesn't explain return format (even without an output schema, the agent needs to know what happens on success/failure), how validation errors are surfaced, or the relationship to sibling validation tools. The schema covers parameters but behavioral context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents all five parameters thoroughly, including the metadata object, output_path, schema_type enum, pretty_print, and include_wrappers. The description adds no parameter details beyond what the schema already provides. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Create standalone XMP metadata packet from metadata object with validation.' Clear what it does. It does not differentiate from siblings like validate_metadata_schema or embed_image_metadata, which also deal with metadata conversion/validation, so it falls short of the 5 benchmark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance. It doesn't clarify whether this is used before embedding, or how it differs from validate_metadata_schema. The description mentions validation but doesn't direct the agent to use validate_metadata_schema separately or explain the relationship.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
embed_image_metadataC
Embed XMP metadata into images stored in Supabase Storage using stream processing
| Name | Required | Description | Default |
|---|---|---|---|
| metadata | Yes | Metadata object containing scene analysis (supports lifestyle, product, or orbit schemas) | |
| output_path | Yes | Path where processed image with embedded metadata will be saved | |
| schema_type | No | Schema type for metadata validation (auto-detected if not specified) | |
| source_path | Yes | Path to source image in Supabase Storage (e.g., "folder/image.jpg") | |
| compression_quality | No | JPEG compression quality (1-100, default: 95) |
TDQS
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 discloses only that stream processing is used, which hints at memory-efficient handling of large files, but says nothing about write/mutation effects, whether the source image is modified, overwrite behavior at output_path, permissions, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the brevity leaves nothing to say about behavior or usage, which sits at the edge of under-specification rather than tight conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with five parameters, a nested object, no annotations, and no output schema, so the description must carry behavioral context. It omits what the tool returns, whether the source is preserved, whether output_path is overwritten, and how the three metadata schemas differ.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters, including the nested metadata object and the schema_type enum, are already documented in the schema. The description adds no syntax, format, or constraint detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (embed XMP metadata into images) plus the storage backend, so the agent knows it is a write-into-image operation. It reads clearly against read_image_metadata, but it never names or distinguishes itself from validate_metadata_schema or create_xmp_packet, which also touch metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of prerequisites or ordering relative to siblings like create_xmp_packet or validate_metadata_schema, and no note on when this should be preferred over simply writing metadata directly. Usage is only inferred from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_image_metadataC
Extract XMP and basic EXIF metadata from images in Supabase Storage
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format for metadata (default: json) | |
| image_path | Yes | Path to image in Supabase Storage (e.g., "folder/image.jpg") | |
| include_xmp | No | Include XMP metadata extraction (default: true) | |
| include_exif | No | Include basic EXIF data extraction (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state whether extraction is read-only (implied but not declared), how large images are handled, whether failures on missing paths are returned or thrown, or what the output structure looks like. For a tool with zero annotation coverage, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource. It is efficient, though it omits any structural framing for parameters or behavior that would help an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a read-oriented extraction tool whose parameters are fully documented in the schema. However, with no annotations and no output schema, the description should disclose more about return shape and behavior to be complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters, their defaults, and the enum for format. The description adds no syntax, format, or constraint details beyond the schema. Baseline 3 is appropriate when structured data does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Extract) and resource (XMP and basic EXIF metadata) and scopes the source (images in Supabase Storage). It does not differentiate itself from siblings like embed_image_metadata or validate_metadata_schema, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative-tool guidance is provided. The agent must infer from the name that this is the read counterpart to embed_image_metadata, but the description offers no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_metadata_schemaA
Validate metadata against ORBIT schemas without embedding (supports lifestyle, product, and orbit schemas)
| Name | Required | Description | Default |
|---|---|---|---|
| metadata | Yes | Metadata object to validate against schema requirements | |
| schema_type | No | Schema type for validation (auto-detected if not specified) | |
| strict_mode | No | Enable strict validation mode (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden; it discloses the important non-mutating trait ('without embedding') and the supported schema families. However, it says nothing about required permissions, whether validation has side effects, or how failures surface, so it covers only part of what an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tightly worded sentence with the action and the key differentiator front-loaded. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a validation tool with no output schema and no annotations, the description leaves a notable gap: it never says what validation returns (pass/fail, error list) or how results are reported. The core purpose is conveyed, but an agent lacks the return-value context needed to use it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all three parameters and the enum. The description's mention of 'lifestyle, product, and orbit schemas' merely echoes the schema_type enum values, adding no syntax, format, or default detail beyond the structured fields. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate) and resource (metadata against ORBIT schemas) and adds the scope 'without embedding', which implicitly distinguishes it from the sibling embed_image_metadata. Clear enough that an agent can tell it apart from the read/create siblings, though it never names the alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: you call this when you want to check metadata against a schema without writing it. The 'without embedding' clause hints at a when-not condition relative to embed_image_metadata, but there is no explicit when-to-use statement, no prerequisites, and no named 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.
5 tool updates
v1.0.0- First observed
create_metadata_report - First observed
create_xmp_packet - First observed
embed_image_metadata - First observed
read_image_metadata - First observed
validate_metadata_schema
TDQS
Scored across 5 tools
Each tool has a distinct purpose: embedding, reading, validating, creating packets, and generating reports. There is no overlap between tool functionalities.
Tools mostly follow a verb_noun pattern (embed_image_metadata, read_image_metadata, validate_metadata_schema, create_metadata_report), but create_xmp_packet deviates slightly with 'xmp' instead of 'metadata'.
5 tools is appropriate for the specialized domain of image metadata embedding and reporting, covering the necessary operations without excess.
The tool set covers the full lifecycle: creating metadata packets, validating, embedding, reading, and reporting. No obvious gaps for the stated purpose.
Maintenance
Related MCP Connectors
MCP server for Product Management
MCP server for detecting and redacting PII (Personally Identifiable Information) in PDF documents.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn offline MCP server that allows LLMs or humans to extract and analyze metadata from images using the exifr library, supporting various image formats and metadata segments without external tools.1139BSD 2-Clause "Simplified"
- AlicenseAqualityDmaintenanceMCP server for multi-provider AI image generation (AWS Bedrock, OpenAI, Google Gemini) enabling image generation, transformation, and editing through a unified interface.41MIT
- AlicenseNot gradedqualityAmaintenanceA full-featured secure MCP server for local file system operations, with built-in image processing, OCR and media tools.Apache 2.0
- FlicenseAqualityCmaintenanceMCP server for image analysis, providing OCR text extraction, image metadata, and EXIF/GPS data as structured JSON for downstream processing.3-