@tinify-ai/mcp-server
This server turns raw images into production-ready assets using AI-powered compression, resizing, upscaling, format conversion, and SEO metadata generation, along with tools for managing your GlassyPic account and credits.
Optimize Images
Smart Compression — Lossy compression with typically 60–80% file size reduction; accepts local absolute file paths or remote URLs (up to 50 MB)
Format Conversion — Convert between JPG, PNG, WebP, AVIF, GIF, SVG, and ICO; HEIC, TIFF, and BMP inputs are auto-converted
Resize & Crop — Proportional scaling or exact dimensions with white padding (
pad) or smart crop (crop)AI Upscaling — Upscale images 2× or 4× using Real-ESRGAN
SEO Metadata Generation — AI-generated alt text, keywords, and SEO-friendly filename slug (costs 1 extra credit, enabled by default)
Animated GIF Support — Process animated GIFs frame-by-frame; animation preserved when output is GIF; other formats keep only the first frame
SVG Optimization — Optimize SVGs via SVGO, trace raster images to vector SVG, or convert SVG to raster formats
ICO/Favicon Generation — Generate a full favicon set (16, 24, 32, 48, 256px) from any image
File Size Targeting — Attempt to meet a maximum output file size via additional compression
Account & Credit Management
login — Authenticate via browser (Google, Facebook, or email/magic link) to unlock higher credit limits
logout — Sign out and revert to guest mode (20 free credits/day)
status — Check current account tier, credits remaining, and reset time
upgrade — Open the GlassyPic pricing page to view Free (50/day), Pro (3,000/month), or Max (10,000/month) plans
Credit Costs: Each optimization costs 3 credits + 1 credit if SEO tag generation is enabled. Guest users get 20 free credits/day with no signup required.
Allows login via Facebook account to authenticate and access tinify.ai credits.
Allows login via Google account to authenticate and access tinify.ai credits.
Allows login via email/magic link (Magic authentication) to access tinify.ai credits.
Supports SVG as an input and output format, with vector optimization and raster-to-vector conversion.
Uses SVGO for SVG optimization when processing SVG files.
Click on "Install 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., "@@tinify-ai/mcp-serverOptimize /Users/me/photo.jpg with SEO metadata"
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.
@glassypic/mcp-server
MCP server for GlassyPic. One tool that turns raw images into production-ready assets. Support upscaling, resizing/cropping, compression, file format conversion, and SEO filename & alt text generation. Just describe the outcome you want in natrual language.
Quick Start
Add to your MCP client config:
{
"mcpServers": {
"glassypic": {
"command": "npx",
"args": ["-y", "@glassypic/mcp-server@latest"]
}
}
}No signup required. Works out of the box with 20 free daily credits.
Windows users: If the server doesn't appear after editing a JSON config, your client likely can't resolve
npxfrom PATH (a common, silent failure). Wrap the command withcmd /c:{ "mcpServers": { "glassypic": { "command": "cmd", "args": ["/c", "npx", "-y", "@glassypic/mcp-server@latest"] } } }This applies to the hand-edited JSON configs below (Claude Desktop, Cursor, Windsurf, Cline). The CLI commands (Claude Code, Gemini CLI, Codex CLI) are unaffected.
Client-Specific Setup
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"glassypic": {
"command": "npx",
"args": ["-y", "@glassypic/mcp-server@latest"]
}
}
}claude mcp add glassypic -- npx -y @glassypic/mcp-server@latestAdd to .cursor/mcp.json in your project root:
{
"mcpServers": {
"glassypic": {
"command": "npx",
"args": ["-y", "@glassypic/mcp-server@latest"]
}
}
}Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"glassypic": {
"command": "npx",
"args": ["-y", "@glassypic/mcp-server@latest"]
}
}
}Open Cline settings → MCP Servers → Add, then paste:
{
"mcpServers": {
"glassypic": {
"command": "npx",
"args": ["-y", "@glassypic/mcp-server@latest"]
}
}
}gemini mcp add --transport stdio glassypic npx -y @glassypic/mcp-server@latestOr edit ~/.gemini/settings.json (global) or .gemini/settings.json in your project root:
{
"mcpServers": {
"glassypic": {
"command": "npx",
"args": ["-y", "@glassypic/mcp-server@latest"]
}
}
}Verify it's running inside Gemini CLI with /mcp list.
codex mcp add glassypic -- npx -y @glassypic/mcp-server@latestOr edit ~/.codex/config.toml manually:
[mcp_servers.glassypic]
command = "npx"
args = ["-y", "@glassypic/mcp-server@latest"]Related MCP server: pruna-mcp-server
Tool: optimize_image
One tool that turns raw images into production-ready assets using AI-powered algorithm and multi-step agents (typically 60-80% size reduction), with optional resize, upscale, format conversion, and SEO metadata generation. Supports JPEG, PNG, WebP, HEIC, GIF, AVIF, TIFF, and BMP. Accepts absolute local file paths or remote URLs.
Parameters
Parameter | Type | Required | Default | Description |
| string | Yes | — | Absolute local file path or remote URL |
| string | No | auto | File path or directory (ending in |
| string | No | original |
|
| int | No | — | Target width in pixels |
| int | No | — | Target height in pixels |
| int | No | — | AI upscale factor: |
| string | No | pad |
|
| bool | No | true | Generate SEO metadata and rename file to SEO slug. Costs 1 extra credit |
| int | No | — | Target maximum output file size in bytes. Server attempts to meet this via additional compression. Not guaranteed |
| int | No | 100 | Max frames to process for animated GIFs (1–100). Reduces credit cost by sampling fewer frames |
| bool | No | — | Set to |
Resize Behavior
Dimensions provided | Behavior |
|
Width only | Proportional scale | N/A |
Height only | Proportional scale | N/A |
Width + Height | Exact dimensions, white padding |
|
Width + Height | Exact dimensions, smart crop |
|
Examples
Basic compression — just compress, keep format and dimensions:
{ "input": "/Users/me/photos/hero.png" }Convert to WebP:
{ "input": "/Users/me/hero.png", "output_format": "webp" }Resize proportionally — set one dimension, the other scales:
{ "input": "/Users/me/hero.png", "output_width_px": 1200 }Exact dimensions with padding — white bars fill the gap:
{ "input": "/Users/me/hero.png", "output_width_px": 1080, "output_height_px": 1080 }Exact dimensions with smart crop:
{ "input": "/Users/me/hero.png", "output_width_px": 1080, "output_height_px": 1080, "output_resize_behavior": "crop" }AI upscale 4x:
{ "input": "/Users/me/icon.png", "output_upscale_factor": 4 }From URL, save to directory:
{ "input": "https://example.com/photo.jpg", "output_path": "/Users/me/assets/" }Skip SEO to save 1 credit:
{ "input": "/Users/me/hero.png", "output_seo_tag_gen": false }Output
Returns a text summary and structured metadata:
Optimized: /Users/me/photos/modern-office-workspace.webp
Size: 142.3 KB
Compression: 73%
Format: webp
Dimensions: 1920x1080
Alt text: Modern office workspace with laptop and coffee cup on wooden deskStructured output fields:
{
"output_path": "/Users/me/photos/modern-office-workspace.webp",
"output_size_bytes": 145715,
"output_width_px": 1920,
"output_height_px": 1080,
"output_format": "webp",
"compression_ratio": 0.27,
"seo_alt_text": "Modern office workspace with laptop and coffee cup on wooden desk",
"seo_keywords": ["office", "workspace", "laptop", "desk", "modern"],
"seo_filename": "modern-office-workspace"
}Supported Formats
Format | Input | Output | Notes |
JPG | Yes | Yes | |
PNG | Yes | Yes | |
WebP | Yes | Yes | |
AVIF | Yes | Yes | |
GIF | Yes | Yes | Animated GIFs preserved when output is GIF |
SVG | Yes | Yes | SVG→SVG optimized via SVGO; raster↔SVG conversion supported |
ICO | Yes | Yes | Smart rebuild: generates 16, 24, 32, 48, 256px favicon set |
HEIC/HEIF | Yes* | No | Auto-converted to JPG at upload |
TIFF | Yes* | No | Auto-converted to JPG at upload |
BMP | Yes* | No | Auto-converted to JPG at upload |
GlassyPic supports high-quality conversion between any input and output format combination. Converting an animated GIF to a non-GIF format (JPG, PNG, WebP, AVIF) preserves only the first frame. Converting an animated GIF to a GIF format supports upscaling/resizing while preserving the animation and quality. You may also reduce animated GIF file size by decreasing the number of output frames.
Max upload file size: 50 MB.
SVG & ICO Examples
# Optimize an SVG file (keeps as vector)
Optimize logo.svg and keep it as SVG
# Convert SVG to raster
Convert icon.svg to a 512x512 PNG
# Trace raster to vector SVG
Convert my logo.png to a vector SVG
# Generate favicon set from any image
Convert logo.png to an ICO favicon
# Generate single-size ICO
Convert logo.png to a 32x32 ICO
# Extract largest icon from ICO
Convert favicon.ico to PNGHow It Works
Local file or URL
→ Upload to GlassyPic API
→ Smart compression (lossy, typically 60-80% reduction)
→ AI SEO tag generation (alt text, keywords, filename)
→ Optional: resize, upscale, format conversion
→ Download optimized file
→ Save with SEO filename slug (or .glassypic suffix if SEO disabled)All processing happens server-side via the GlassyPic API. The MCP server is a thin client that orchestrates the pipeline.
Credits
Guest | Free | Pro | Max | |
Credits/day or month | 20/day | 30/day | 3,300/month | 12,000/month |
Images/day (default settings) | ~5 | ~7 | ~825 | ~3,000 |
Cost per image | 4 credits (compress + SEO tags, defaults) | same | same | same |
Signup required | No | Free signup | Paid | Paid |
Session data is stored locally at ~/.glassypic/session.json and persists across invocations.
Automatic upscaling
When a resize target exceeds the source image by more than 1.2×, GlassyPic
automatically runs an AI upscale before resizing, so enlargements ship sharp
instead of blurred. This happens without output_upscale_factor being set and
adds 2 credits.
A resize-only call therefore costs the same as a full pipeline when the source is smaller than the target:
Call | Credits |
Compress only, no SEO tags | 3 |
Compress + SEO tags (defaults) | 4 |
Resize down + SEO tags | 5 |
Resize up past 1.2× + SEO tags | 7 |
Compress + resize + explicit upscale + tags | 7 |
SVG or ICO output | 1 (flat, overrides the above) |
Animated GIFs are billed per frame — see the confirm_gif_cost parameter.
Account & Credits
Log in to unlock more credits and share them across the web app and MCP server:
Use the login tool to sign in.
Use the status tool to check your current credits.
Use the upgrade tool to open the pricing page.
Use the logout tool to sign out.login
Opens a browser window to complete login (Google, Facebook, or email/magic link). After approval, your account is linked and credits are shared with the web app.
Login complete: user@example.com (Pro tier, 3,150 of 3,300 credits remaining)status
Check your current account status and credits before batch processing:
Logged in as user@example.com (Pro tier)
Credits: 3,150 of 3,300 remaining
Resets: 03/01/2026, 12:00 AM PSTlogout
Revokes the session and reverts to guest mode (20 credits/day).
upgrade
Opens glassypic.com/pricing in your browser.
Tips for AI Agents
Paste this into your CLAUDE.md or system prompt to help agents use the tool effectively:
## GlassyPic MCP
Tools: optimize_image, login, logout, status, upgrade
- Use status to check credits before batch processing
- Credits: 3 to compress (always), +1 if width/height is set, +2 to upscale, +1 for SEO tags (default). A full pipeline is 7 credits. SVG/ICO output is a flat 1 credit.
- Resizing up past 1.2x the source triggers an automatic AI upscale (+2 credits) even without output_upscale_factor set — a resize-only call on a small image can cost 7, not 5.
- Guest: 20 credits/day. Free account: 30/day. Pro: 3,300/month.
- Always use absolute file paths, not relative.
- Set only width OR height for proportional resize. Set both for exact dimensions.
- When both dimensions are set, use output_resize_behavior: "crop" for photos, "pad" for logos/icons.
- output_seo_tag_gen (default true) renames the file to an SEO slug and generates alt text + keywords.
- Set output_seo_tag_gen: false to save 1 credit when SEO metadata is not needed.
- GIF is supported for both input and output; animated GIFs stay animated when output_format is "gif".
- Converting an animated GIF to jpg/png/webp/avif preserves only the first frame.
- HEIC, TIFF, BMP inputs are auto-converted to JPG.
- For batch processing, call optimize_image once per file.
- If credits run out, use login to sign in or upgrade to open pricing.Troubleshooting
Server not appearing in tool list:
Restart your MCP client after editing the config
Ensure Node.js >= 18 is installed:
node --versionTry running directly:
npx -y @glassypic/mcp-server@latest(should start without errors)On Windows: if the server silently never loads, wrap the command with
cmd /c("command": "cmd","args": ["/c", "npx", "-y", "@glassypic/mcp-server@latest"]) — see the Windows note under Quick Start
"Insufficient credits" error:
Use the
statustool to check remaining creditsUse the
logintool to sign in for more credits (free accounts get 30/day)Use the
upgradetool to open the pricing page and compare plansDisable SEO tags (
output_seo_tag_gen: false) to save 1 credit; note that resizing up past 1.2× the source still adds an automatic 2-credit upscale regardless
Login browser window doesn't open:
Open this URL manually:
https://glassypic.com/mcp/authorizeand enter the code shown in the terminalEnsure a browser is installed and accessible
Session token issues:
Session data is stored at
~/.glassypic/session.jsonDelete this file to reset and start fresh
Use
logoutthenloginto re-authenticate
File not found:
Use absolute paths for local files
For URLs, ensure the image is publicly accessible
Timeout errors:
Large images or AI upscaling can take 30-60 seconds
The server has a 60-second timeout per job
Privacy Policy
Full policy: https://glassypic.com/privacy/
What is transmitted. Images you optimize are uploaded to the GlassyPic API
(https://api.glassypic.com) for processing, along with your authentication
token. Images are retained according to your account tier and then deleted —
both the original upload and the processed version. See the policy for the
retention schedule.
When you pass a remote URL to the tool, the GlassyPic API fetches it server-side; the URL itself is sent to GlassyPic, and the request to the image host originates from GlassyPic's servers rather than from your machine.
What is stored locally. When you use the login tool, your access token and
account email are written to ~/.glassypic/session.json with file mode 0600
(owner read/write only). If you optimize an image without logging in, the
first upload mints a guest session token, which is written to that same file
so subsequent calls stay attached to the same guest session's credits — no
account, email, or personal information is attached to it. Running the
logout tool removes the file's token. See also
Account & Credits and Troubleshooting.
What is not collected. When run as a local connector, this server sends no telemetry and makes no network call other than to the GlassyPic API. (The remote HTTP transport additionally calls Supabase for authentication.)
Configuration
Variable | Default | Purpose |
|
| API endpoint. Development and self-hosting only — most users never set it. |
| — | Pre-rename alias for the above. Retained for existing deployments; |
The value must be an https URL. Plain http is accepted only for localhost
and 127.0.0.1, because your images and Bearer token are sent to this host. An
invalid value produces a clear error naming the variable rather than a silent
request to the wrong endpoint.
Requirements
Node.js >= 18
An MCP-compatible client (Claude Desktop, Claude Code, Cursor, Windsurf, Cline, OpenAI Codex CLI, Gemini CLI, etc.)
License
MIT - see LICENSE.
Available Tools
5 toolsloginLog InAInspect
Log in to your GlassyPic account via browser to unlock more credits. Opens a browser window where you complete login (Google, Facebook, or email). After login, MCP automatically picks up your account with shared credits across web and MCP. Registered accounts receive a larger credit allowance than guest sessions; use the status tool to read the account's actual tier and remaining credits. Your access token and email are stored locally at ~/.glassypic/session.json (file mode 0600) until you run logout.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behaviors beyond annotations: it opens a browser window, supports Google/Facebook/email, automatically picks up the account, and stores the access token and email locally at ~/.glassypic/session.json with file mode 0600 until logout. This is far more transparent than the minimal annotations (openWorldHint=true) and covers side effects, storage, and security posture.
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?
The description is four sentences, each contributing essential information: the action, the browser flow, the credit benefit and related status tool, and the local session storage. It is front-loaded with the core purpose and avoids redundancy. Every sentence earns its place.
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?
Given no parameters, no output schema, and minimal annotations, the description is remarkably complete. It covers the login flow, credit implications, related tool usage, and security details about the stored session. It also clarifies that login is a prerequisite for shared credits, making the tool's role in the system fully comprehensible.
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?
The tool has zero parameters, so the baseline is 4. The description adds no parameter-level semantics because there are none, but it does explain the authentication flow and what happens after login. This is sufficient given the empty schema.
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?
The description clearly states the tool's purpose: 'Log in to your GlassyPic account via browser to unlock more credits.' The verb 'log in' is specific and the resource (GlassyPic account) is explicit. It distinguishes itself from sibling tools like logout, status, and upgrade by focusing solely on authentication.
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 provides clear context on when to use login (to unlock credits) and references the status tool for reading account tier and credits, offering an alternative for account info. It does not explicitly state when not to use login, but the use case is well implied. The mention of logout as the counterpart also helps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutLog OutADestructiveIdempotentInspect
Log out of your GlassyPic account. Reverts to guest session (20 free credits/day). Your web app account is not affected.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds concrete behavioral consequences beyond annotations: it reveals that logging out reverts to a guest session with '20 free credits/day' and that web app account remains unaffected. This aligns with the destructiveHint and idempotentHint annotations while providing valuable extra context about the state change and side effects, which annotations alone do not convey.
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?
The description is just two sentences, front-loaded with the primary action, and every word adds value. It mentions the key outcome (guest session), a constraint (credits), and an exclusion (web app account), all in 20 words. This is exemplary 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?
For a parameterless logout tool with no output schema, the description is complete: it states the action, the resulting state, and the boundary of effect. The annotations fill in the destructive and idempotent properties, and the description covers everything else an agent needs to invoke it correctly.
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?
The tool has zero parameters, so the empty schema fully covers the parameter space. Per the baseline rule, a score of 4 is appropriate since no parameter explanation is needed, and the description adds no redundant parameter details.
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?
The description opens with 'Log out of your GlassyPic account', a specific verb+resource that clearly states the action. It also explains the result of logging out (reverts to guest session) and explicitly distinguishes the tool's scope from a web app account, setting it apart from sibling operations like login or status.
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 provides clear context for when to use the tool: ending a GlassyPic session. It includes an explicit when-not by stating 'Your web app account is not affected', signaling that this tool is not for logging out of the web app. The mention of guest credits hints at the post-condition, giving enough guidance for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_imageOptimize ImageAInspect
Optimize an image: smart lossy compression (typically 60-80% size reduction), optional resize/upscale/format conversion, and AI-generated SEO metadata. Accepts absolute local file paths or remote URLs. In remote/API mode, only remote URLs are supported. Supported input formats: JPG, PNG, WebP, AVIF, GIF, SVG, ICO, HEIC, TIFF, BMP (max 50 MB). Supported output formats: JPG, PNG, WebP, AVIF, GIF, SVG, ICO. Credits: 3 to compress (always), +1 if width or height is set, +2 to upscale, +1 for SEO tags (on by default). A full pipeline is 7 credits. Upscale is charged whether you request it or the server adds it automatically — it does so whenever a resize target exceeds the source by more than 1.2x, so a resize-only call on a small image also costs 7. SVG or ICO output is a flat 1 credit, overriding everything above. Animated GIFs are billed per frame: (per-frame operations x frames) + 1 if tags, up to 601 credits at the 100-frame limit — confirm_gif_cost gates that path. GIFs are excluded from automatic upscaling. Guest (unregistered): 20 credits/day, no signup. Log in with the login tool for more credits — registered Free tier is 30/day. Use status tool to check remaining credits before batch processing.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Absolute local file path or remote URL of the image to optimize. Note: in remote/API mode, only remote URLs are supported (no local file paths). Supported inputs: JPG, PNG, WebP, AVIF, GIF (animated supported), HEIC, TIFF, BMP (max 50 MB). GlassyPic supports high-quality conversion between any input and output format. | |
| output_path | No | Where to save. Accepts a file path (/tmp/out.webp) or directory ending in / (/tmp/images/). If omitted: saves next to original, named with SEO slug when SEO is enabled or .tinified suffix otherwise. URLs save to current working directory. | |
| output_format | No | Output format. Defaults to 'original' (keep input format). Animated GIFs stay animated when output is 'gif'; converting to other formats preserves only the first frame. SVG output from raster input uses vector tracing. ICO output generates a favicon set (16, 24, 32, 48, 256px) unless a specific size is given. | |
| gif_frame_limit | No | Maximum frames to process for animated GIFs (1-100, default 100). Reduces cost by sampling fewer frames while preserving animation. | |
| output_width_px | No | Target width in pixels. Set only width for proportional resize. Set both width and height for exact output dimensions (see output_resize_behavior). Costs 1 credit. If the target exceeds the source by more than 1.2x, the server also adds an AI upscale for a further 2 credits. | |
| confirm_gif_cost | No | Set to true to proceed with animated GIF processing after seeing cost warning. Required for animated GIFs to prevent unexpected credit consumption. | |
| output_height_px | No | Target height in pixels. Set only height for proportional resize. Set both width and height for exact output dimensions (see output_resize_behavior). Costs 1 credit. If the target exceeds the source by more than 1.2x, the server also adds an AI upscale for a further 2 credits. | |
| _gif_temp_file_id | No | Internal: temp file ID from a previous GIF cost warning. Skips re-upload. | |
| output_seo_tag_gen | No | Generate SEO metadata (alt text, keywords, filename) and rename output file to SEO slug. Costs 1 extra credit. Default: true. | |
| output_upscale_factor | No | AI upscale factor: 2 (2×) or 4 (4×). Uses Real-ESRGAN for high-quality upscaling. Costs 2 credits. Note that upscaling also triggers automatically, without this parameter, whenever a resize target exceeds the source by more than 1.2x — the same 2 credits are charged either way. | |
| output_file_size_limit | No | Target maximum output file size in bytes. The server will attempt to meet this limit through additional compression. Not guaranteed. | |
| output_resize_behavior | No | When both width and height are set and aspect ratio differs: 'pad' adds white padding (default), 'crop' smart-crops to fill exact dimensions |
Output Schema
| Name | Required | Description |
|---|---|---|
| output_path | Yes | Absolute path where the optimized file was saved |
| seo_alt_text | Yes | AI-generated image alt text for accessibility and SEO |
| seo_filename | Yes | AI-generated SEO filename slug without extension |
| seo_keywords | Yes | AI-generated keywords describing the image |
| output_format | Yes | Output format: jpg, png, webp, avif, or gif |
| output_width_px | Yes | Width of the output image in pixels |
| output_height_px | Yes | Height of the output image in pixels |
| compression_ratio | Yes | Output-to-input size ratio, e.g. 0.35 means 65% smaller |
| output_size_bytes | Yes | File size of the optimized image in bytes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses non-obvious behavior beyond annotations: automatic upscaling trigger (over 1.2x), per-frame GIF billing with 601 credit cap, flat 1-credit override for SVG/ICO, and default SEO tagging (on by default). No contradiction with readOnlyHint=false.
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?
The description is dense but each sentence provides actionable details, from supported formats to credit calculations. It starts with the core action and progressively layers constraints, making it easy to scan.
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?
Covers input/output formats, size limits, cost model, remote mode, authentication implications, and prerequisite checks. With 12 parameters and complex billing logic, the description leaves no critical gaps for an agent to make a costly error.
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?
Despite 100% schema coverage, the description enriches parameters with credit costs, conditional defaults, and special cases (e.g., output_format behaviors, auto-upscale when width/height set, confirm_gif_cost gating). This goes beyond the schema's property descriptions.
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?
The description opens with a specific verb+resource: 'Optimize an image', then enumerates concrete capabilities (lossy compression, resize/upscale/format conversion, AI SEO metadata). This clearly distinguishes it from sibling tools like login, status, and upgrade.
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?
Provides explicit context: remote/API mode restrictions, guest vs registered credit limits, and direction to 'Use status tool to check remaining credits before batch processing'. Also explains when confirm_gif_cost is required and how to log in for more credits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusAccount StatusARead-onlyIdempotentInspect
Check your GlassyPic account status: login state, tier, credits remaining, and credit reset time. Use this before batch processing to verify sufficient credits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, covering the safety profile. The description adds the specific status fields and a use-case tip, but does not disclose additional behavioral traits such as authentication requirements or rate limits. With annotations present, this is adequate but not rich.
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?
The description is two concise sentences, front-loaded with the purpose and followed by actionable usage advice. No unnecessary words or repetition.
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 simple status-check tool with no parameters, the description is complete. It explicitly lists the return fields, compensating for the lack of an output schema, and provides a clear usage scenario.
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?
The tool has zero parameters, so the input schema covers everything trivially. The description adds no parameter details, which is appropriate. Per the rubric, a 0-parameter tool gets a baseline of 4.
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?
The description clearly states the tool's function with a specific verb ('Check') and resource ('GlassyPic account status'), and enumerates the exact data returned (login state, tier, credits remaining, credit reset time). It distinguishes itself from sibling tools like login/logout/upgrade by being the read-only status checker.
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 provides a concrete usage context: 'Use this before batch processing to verify sufficient credits.' It does not explicitly mention when not to use or name alternatives, but the guidance is clear and practical for the intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgradeOpen Pricing PageAIdempotentInspect
Open the GlassyPic pricing page in the user's browser, where the account's plan can be reviewed and changed. Call this only when the user asks to change or review their plan.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is open-world, idempotent, and non-destructive. The description adds valuable context that it opens a page (not directly modifying the plan) and that the plan can be changed from that page. This goes beyond the annotations without contradicting them.
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?
The description is a single, well-structured sentence that front-loads the core action and then provides the usage condition. Every word earns its place with no redundancy.
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 no parameters and no output schema, the description is completely sufficient: it explains what the tool does, what page it opens, and when to call it. There are no gaps in understanding.
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?
The tool has zero parameters, and the schema covers everything (100% coverage). The description still contributes by clarifying the action's intent, though no parameter details are needed. This aligns with the baseline for parameterless tools.
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?
The description uses a specific verb ('Open') and specifies the resource ('GlassyPic pricing page'), clearly distinguishing this from sibling tools like login, logout, status, and optimize_image. It states exactly what the tool does and why it exists.
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 gives explicit when-to-use guidance: 'Call this only when the user asks to change or review their plan.' This is a clear directive that also implies when not to use it, making it easy for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a clearly distinct area: login/logout handle authentication, status shows account state, upgrade manages plans, and optimize_image is the core action. There is no functional overlap between any two tools.
Most tools use simple verb forms (login, logout, upgrade), while status is a noun and optimize_image follows verb_noun. The naming is readable and predictable, though not perfectly uniform.
Five tools is well-scoped for an image optimization service. The core operation plus account management tools form a tight, purposeful set without redundancy.
The set covers the full user journey: account access (login/logout), account monitoring (status), plan changes (upgrade), and the primary image optimization operation. There are no obvious missing operations that would impede an agent.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Qwen Image 3 AI image generation
MCP server for Midjourney AI image generation and editing
MCP server for Wan AI video generation
MCP server for NanoBanana AI image generation and editing
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA lightweight MCP server for image processing and cloud uploads that automates resizing, converting, optimizing, and uploading images to services like AWS S3, Cloudflare R2, and Google Cloud Storage.2918MIT
- AlicenseAqualityBmaintenanceMCP server for Pruna AI — ultra-fast image generation, editing, upscaling, and video generation directly from your AI assistant.84MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for image optimization, conversion, AI generation, and gallery management via SnapiX API.17MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for generating, editing, and processing images via multiple providers including Kilo, OpenRouter, OpenAI, and Gemini, with local tools for background removal, resizing, and cropping.232MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/onepunchtechnology/glassypic-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server