Skip to main content
Glama

Server Details

Vectorize images: PNG/JPG to SVG, PDF, EPS, DXF. Turns logos, icons and scans into clean vectors.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 20 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a distinct role: upload prep, vectorization, re-vectorization, credit check, and a manual editor fallback. The vectorize/open_editor/revectorize trio overlaps in the 'make a vector' space, but descriptions explicitly cross-reference when to use each, which largely resolves the ambiguity.

Naming Consistency4/5

Names follow a mostly predictable verb_noun or verb pattern (create_upload, get_usage, open_editor, vectorize). 'revectorize' is a bare verb with a re- prefix, a minor deviation but still readable and consistent in style.

Tool Count5/5

Five tools is well-scoped for a focused vectorization service, with each tool earning its place across the create-upload, vectorize, and fallback-editor workflow.

Completeness4/5

The core lifecycle (upload prep, vectorize, re-vectorize, usage, manual fallback) is covered with no dead ends for the main task. Minor gaps exist, such as no way to list or manage previously stored results beyond the result_id/token returned by vectorize.

Available Tools

5 tools
create_uploadCreate upload linkAInspect

Creates a one-time upload link for a local image file (valid 10 minutes). Upload the file with the returned curl command, then pass upload_id to vectorize. Only for agents whose terminal can reach shapesoda.com (Claude Code, Cursor and similar); in Claude.ai and other chat apps the sandbox cannot upload there, so call open_editor instead.

NameRequiredDescriptionDefault
filenameNoOptional file name, for reference only.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare it is a non-read-only, non-idempotent, non-destructive operation. The description adds substantial behavioral context beyond that: the link is one-time, valid for 10 minutes, requires uploading via the returned curl command, and has an environment reachability constraint. This is rich and useful operational detail.

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

Conciseness5/5

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

Three tightly written sentences front-load the tool action, then the upload workflow, then the environment restriction and alternative. Every sentence earns its place with no redundancy.

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?

The description covers the full workflow (create link, upload with curl, pass upload_id to vectorize), the key constraint (10-minute validity), and the critical environment fallback to open_editor. With no output schema needed to explain return values, this is complete for correct invocation.

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?

There is one optional parameter, filename, and schema description coverage is 100%, so the schema already documents it as 'Optional file name, for reference only.' The description does not add any syntax, format, or constraint details for filename, so the baseline score of 3 applies.

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 states a specific verb and resource: 'Creates a one-time upload link for a local image file.' It also distinguishes the tool from siblings by naming open_editor as the alternative for incompatible environments and vectorize as the next step, so an agent can route correctly.

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 conditions ('Only for agents whose terminal can reach shapesoda.com') and when-not-to-use conditions ('in Claude.ai and other chat apps the sandbox cannot upload there'), plus the exact fallback: 'call open_editor instead.' It also states the follow-up step of passing upload_id to vectorize.

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

get_usageGet usageA
Read-onlyIdempotent
Inspect

Shows how many credits were used this month and how many remain.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds only the month-to-date scoping of the query but nothing about auth requirements, rate limits, or the fact that it's workspace/account-scoped.

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

Conciseness5/5

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

One sentence, front-loaded with the action and result, zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param read tool with full annotations and no output schema, the description is adequate to select it but does not explain the return shape or scope (e.g., which credits/plan). Minimum viable.

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?

Zero parameters, so baseline is 4. The description correctly indicates no filtering inputs are needed since it returns a fixed monthly summary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific result (credit usage this month and remaining balance), clearly distinguished from siblings like create_upload and vectorize which are unrelated operations.

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

Usage Guidelines3/5

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

The purpose implies when to use it (checking credit status), but there is no explicit when-to-use guidance or alternatives mentioned. Implied usage without exclusions.

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

open_editorOpen ShapesodaA
Read-onlyIdempotent
Inspect

Use this when the user wants to vectorize an image but you cannot pass the image to vectorize (no image, upload_id or exact base64 bytes available), including when the user attached the image in Claude.ai: opens the Shapesoda window, where the user picks the file, sees the vector result and adjusts it. Does not vectorize by itself and uses no credits. Do not use for generating new images.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavior the annotations do not: it performs no vectorization itself and consumes no credits, plus describes the interactive hand-off flow. It stops short of noting any UI-state or auth prerequisites.

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?

Front-loads the usage condition and follows with the behavior and the exclusion, so the agent gets routing info first. The opening sentence is somewhat run-on with its parenthetical, but every clause carries information and nothing is padding.

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 zero-parameter, read-only UI-opening tool with full annotation coverage and no output schema, the description supplies everything needed: when to call it, what it does not do, and the credit implication. Nothing required for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The description correctly implies no arguments are supplied by the caller.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (opens the Shapesoda window), the resource (the editor UI), and what the user does there (picks the file, sees the vector result, adjusts it). It explicitly distinguishes itself from the vectorize sibling by declaring 'Does not vectorize by itself,' so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit trigger condition ('when the user wants to vectorize an image but you cannot pass the image to vectorize'), enumerates the specific blocking cases (no image, upload_id, or exact base64 bytes), and names a negative case ('Do not use for generating new images'). The when and when-not are both spelled out.

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

revectorizeRe-vectorize with other settingsAInspect

Re-vectorizes a stored result (result_id and token from vectorize) with other settings, free for 24 hours after the first vectorization. Used by the Shapesoda window.

NameRequiredDescriptionDefault
tokenYesResult token (the token parameter of the result links).
colorsNoNumber of colors: 'auto', 'unlimited', or an integer 2–32 (max_colors goes up to 256). Default auto.
cornersNoKeep corners sharp or round them.
paletteNoFixed colors #rrggbb (2–256), as a list or a comma-separated string. Not combined with colors or max_colors.
qualityNoInput quality: low for blurry/noisy/JPEG-heavy images. Default auto.
min_areaNoSmallest shape kept, in px²; smaller specks are dropped. Overrides the preset.
result_idYesresult_id from vectorize or revectorize.
image_typeNoKind of image: artwork with smooth (anti-aliased) edges, artwork with hard pixel edges, or photo. Default auto.
smoothnessNoContour smoothing 1–10 (higher: smoother, fewer nodes).
transparencyNoTransparent areas: keep (stay transparent), white, or a background color #rrggbb.

Output Schema

NameRequiredDescription
modeNo
filesYesDownload link per format.
widthYes
heightYes
result_idNo
svg_bytesNo
expires_atNo
download_urlNoLink to the first requested format.
credits_chargedNo
credits_remainingYes
free_remaining_todayNoFree MCP vectorizations left today (used before credits).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the mutation profile is covered. The description adds one genuine behavioral fact not in the annotations — the 24-hour free window — but omits whether the original result is kept or replaced, whether credits are charged afterward, and what auth the token grants.

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

Conciseness5/5

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

Two short sentences with the action and its required inputs front-loaded, and no filler beyond the marginally useful Shapesoda UI reference. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the parameter schema is fully documented, so return values and options do not need explanation here. For a non-idempotent, non-destructive re-run with ten parameters, the description is adequate but leaves the key lifecycle question (new result vs. overwrite) unaddressed.

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 description coverage is 100%, so all ten parameters (colors, palette, corners, quality, min_area, image_type, smoothness, transparency, result_id, token) are already documented in the schema. The description only restates the origin of result_id/token and adds no syntax or defaulting detail, notably failing to say whether unspecified settings are inherited from the original vectorization.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Re-vectorizes a stored result') and names the required inputs, which implicitly distinguishes it from the sibling vectorize (this operates on an existing result_id rather than a fresh upload). The differentiation is implied rather than spelled out, and the trailing 'Used by the Shapesoda window' adds no selection value.

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

Usage Guidelines3/5

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

The 'free for 24 hours after the first vectorization' clause implies a usable time window after vectorize, which is useful context. However, it never explicitly says to prefer this over vectorize when a result_id already exists, nor what happens to the original result, leaving the when-to-use decision largely inferential.

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

vectorizeVectorize imageAInspect

Use this when the user wants to convert a raster image (logo, icon, illustration, scan, screenshot; PNG, JPEG, WebP, BMP, GIF, TIFF) into a vector: SVG, PDF, EPS, DXF or a re-rendered PNG. Pass the image in exactly one way: image (a file attached to the chat message, ChatGPT), upload_id (from create_upload) or image_base64 (≤2 MB, only exact file bytes you already have as text). If none of these is available, for example an image attached in Claude.ai, call open_editor instead. Returns a download link per format, valid 24 hours (or retention_days), and the SVG inline when small. Uses 1 credit for all formats; mode=test is free and watermarked; mode=preview is a free PNG up to 1 MP whose link buys the vectors later (format=svg, 1 credit). Do not use for generating new images, editing photos or upscaling.

NameRequiredDescriptionDefault
dpiNoPixels per inch of PNG output; needs a size in pt, mm, cm or in. Default 300.
drawNofill: filled shapes; stroke: outline of every shape; stroke_edges: only the borders between shapes, each once (no double cuts). Default from the preset.
modeNotest: free, watermarked result for building an integration. preview: free PNG up to 1 MP without watermark, no vectors; fetch its link with format=svg to buy the vectors for 1 credit. Neither is available for vectorize_url. Default live.
unitNoUnit for width/height: px (default), pt, mm, cm, in.
imageNoImage file attached to the user's message in the chat (ChatGPT).
scaleNoOutput size as a multiple of the source size. Not with width/height.
widthNoPhysical output width in unit. With width only, the height follows the aspect ratio; with height too, a sheet of that size (see aspect). Up to 10 m.
aspectNoWith both width and height: fit (default, whole drawing inside), fill (covers the sheet, excess cropped), stretch (exact size, distorted).
colorsNoNumber of colors: 'auto', 'unlimited', or an integer 2–32 (max_colors goes up to 256). Default auto.
curvesNoall: curves and lines; lines: straight segments only; lines_arcs: DXF lines and arcs, other formats as lines.
detailNoOutput detail for photos. Default auto.
formatNoOutput formats; several formats cost 1 credit together. Default: the preset's format (svg for web).
heightNoPhysical output height in unit (width follows the aspect ratio unless width is set too).
layersNoShapes stacked on top of each other, cut out of each other, or cut out and grouped by color. Default from the preset.
presetNoSettings for the job: web (default), print (PDF, shapes cut out), cut (vinyl/stickers, 8 colors), laser (2-color outlines), embroidery (12 colors, no tiny shapes).
align_xNoHorizontal placement on the sheet, 0 left … 1 right (default 0.5). Needs width and height; not with aspect=stretch.
align_yNoVertical placement on the sheet, 0 top … 1 bottom (default 0.5). Needs width and height; not with aspect=stretch.
cornersNoKeep corners sharp or round them.
denoiseNoNoise reduction before tracing: 0 off … 3 strongest.
paletteNoFixed colors #rrggbb (2–256), as a list or a comma-separated string. Not combined with colors or max_colors.
qualityNoInput quality: low for blurry/noisy/JPEG-heavy images. Default auto.
group_byNoGroups in the output: color (one per color) or layer (by nesting depth). SVG <g>, PDF layers, EPS blocks, DXF layers. Default: by color only for layers=cutouts_grouped (DXF always by color).
min_areaNoSmallest shape kept, in px²; smaller specks are dropped. Overrides the preset.
upload_idNoID returned by create_upload after the file was uploaded.
dxf_curvesNoDXF curves as lines (polylines, default), arcs or splines. curves=lines/lines_arcs wins.
gap_fillerNoon: an underlay in the shape colors hides light gaps between shapes. Needs draw=fill. Default off.
image_typeNoKind of image: artwork with smooth (anti-aliased) edges, artwork with hard pixel edges, or photo. Default auto.
max_colorsNoMaximum number of colors (2–256). Not combined with colors or palette.
max_pixelsNoDownscale the input to at most this many pixels before tracing (faster, fewer nodes).
smoothnessNoContour smoothing 1–10 (higher: smoother, fewer nodes).
svg_versionNoSVG flavor: 1.1 (default), 1.0, or tiny1.2 (no opacity or gradient transforms).
adobe_compatNotrue: SVG friendly to Adobe Illustrator (size always set, stroke widths in drawing coordinates).
image_base64NoExact PNG/JPEG/WebP/BMP/GIF/TIFF file bytes in base64 (≤2 MB), only when you already have them as text (e.g. from reading the file in a terminal). Never transcribe an image you only see in the conversation; call open_editor instead. Use create_upload for larger files.
stroke_colorNoStroke color #rrggbb instead of the shape color; needs draw=stroke or stroke_edges.
stroke_widthNoStroke width; needs draw=stroke or stroke_edges. Output units, or source pixels with stroke_scaling=scale. Default: hairline.
transparencyNoTransparent areas: keep (stay transparent), white, or a background color #rrggbb.
png_antialiasNoAnti-aliasing in PNG output. Default on.
retention_daysNoKeep the result downloadable for this many days (default 24 hours). Live mode only.
stroke_scalingNofixed (default): width stays in output units when resized; scale: width in source pixels scales with the drawing.
svg_fixed_sizeNotrue (default): width/height on the root <svg>; false: only a viewBox (responsive).
curve_toleranceNoCurve fitting tolerance in source pixels (default ≈0.5): lower keeps more nodes. Also sets smoothness unless given.
gap_filler_widthNoGap filler width in source pixels (default 1). Needs gap_filler=on.
palette_toleranceNoWith palette: how far (CIE76 ΔE) an image color may be from a palette color to snap to it; farther colors keep their own value.

Output Schema

NameRequiredDescription
modeNo
filesYesDownload link per format.
widthYes
heightYes
result_idNo
svg_bytesNo
expires_atNo
download_urlNoLink to the first requested format.
credits_chargedNo
credits_remainingYes
free_remaining_todayNoFree MCP vectorizations left today (used before credits).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds substantial context beyond them: 1-credit cost across formats, mode=test free/watermarked, mode=preview free PNG whose link later buys vectors, per-format download links valid 24 hours or retention_days, and inline SVG when small. This is exactly the billing/retention/watermark behavior structured fields cannot convey.

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?

Front-loads the primary purpose, then input-selection rules, then return/cost behavior, with no filler sentences. It is dense and runs long, but the length is justified by a 43-parameter tool; splitting into clearer paragraphs would help slightly.

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 43 properties, 17 enums, nested objects, and an output schema, the description covers the genuinely ambiguous parts: which input channel to use, sibling routing, cost/mode semantics, and retention. Return values are already covered by the output schema, so nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: the image input must be passed in 'exactly one way' among image, upload_id, or image_base64 (≤2 MB, only exact bytes already in hand) — a mutual-exclusivity constraint absent from the schema. It adds this constraint without duplicating the 43 documented parameters, so it earns above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (convert raster image into vector), enumerates accepted input formats (PNG, JPEG, WebP, BMP, GIF, TIFF) and output formats (SVG, PDF, EPS, DXF, PNG), and explicitly contrasts with sibling open_editor. An agent can distinguish it from siblings without opening any schema.

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

Usage Guidelines5/5

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

Explicit when-to-use ('Use this when the user wants to convert...'), when-not ('Do not use for generating new images, editing photos or upscaling'), and a named alternative with its triggering condition (fall back to open_editor when no image input is available). Nothing is left to inference.

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.

  1. 1 tool update
    • Changedvectorize1 field changed
      • changedInput schema / properties / image_base64 / description
        Previous value: -"PNG/JPEG/WebP/BMP/GIF/TIFF bytes in base64 (≤2 MB). Use create_upload for larger files."New value: +"Exact PNG/JPEG/WebP/BMP/GIF/TIFF file bytes in base64 (≤2 MB), only when you already have them as text (e.g. from reading the file in a terminal). Never transcribe an image you only see in the conversation; call open_editor instead. Use create_upload for larger files."
  2. 5 tool updates
    • First observedcreate_upload
    • First observedget_usage
    • First observedopen_editor
    • First observedrevectorize
    • First observedvectorize

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources