SVGProof
Server Details
SVGProof converts logos into clean, editable SVG files that print shops, sign makers and design tools accept. It's built for flat art: AI-generated logos from ChatGPT, Gemini or Midjourney, plus icons, wordmarks and badges. The output is accurate shapes with few nodes, not a picture wrapped in an SVG.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
The tools mostly have distinct purposes: account checks balance, vectorize performs conversion, and the two upload tools are distinguished by environment (shell/coding agent vs chat app). The create_upload and upload_logo overlap conceptually, but the descriptions provide clear routing guidance.
The names are readable but follow mixed conventions: create_upload and upload_logo are verb_noun, vectorize is a bare verb, and account is a noun. The upload_* naming helps somewhat, but the set is not uniformly predictable.
Four tools is well-scoped for a focused image-to-SVG conversion API. Each tool has a clear role in the workflow: account inspection, upload preparation, chat-based upload, and vectorization.
The core lifecycle is covered: check account, provide an image via two upload paths, and convert it to SVG with a download link. Minor gaps exist around conversion history or job status, but the main workflow appears complete.
Available Tools
4 toolsaccountCredit balance and limitsARead-onlyInspect
Free. The credit balance of this API key's account, free test previews left, this month's use and the rate limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds one genuinely new behavioral fact — that the call is 'Free' — plus an enumeration of returned fields. It does not say whether querying affects the reported counters, whether rate limits shown are hard or soft, or how usage is measured, leaving real gaps beyond the annotations.
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?
It is a single short sentence with no padding, which is appropriate for a simple getter. However, the dangling one-word opener 'Free.' is not front-loaded purpose information and reads ambiguously — it could be misread as describing an account tier rather than the cost of the call.
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 no parameters and no output schema, the description carries the burden of telling the agent what comes back, and it does so by listing the four returned data points. Missing are units/format for 'use' and 'previews left' and any notion of what a zero balance implies for subsequent calls, so it is solid but not exhaustive.
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 takes zero parameters, so there is nothing for the description to disambiguate; baseline for a no-param tool is 4. The description correctly implies a keyless, context-derived lookup (account is identified by the API key).
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 enumerates exactly what the tool returns: credit balance for the API key's account, remaining free test previews, this month's usage, and rate limits. That is a specific resource read, and it is obviously distinct from the siblings (create_upload, upload_logo, vectorize). It lacks an explicit verb like 'retrieve', and the leading fragment 'Free.' is ambiguous, 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?
Usage is only implied — an agent can infer you call this to check remaining credits, previews, or rate limits before making requests. There is no explicit when-to-use statement, no prerequisites, and no named alternatives. Since the sibling tools are unrelated operations, the risk of misselection is low, keeping this at a minimum-viable 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_uploadGet an upload link for a local fileAInspect
Free. Returns a one-time upload link (valid 10 minutes) and the curl command to send a local image to it. After the upload, call vectorize with the upload_id. For coding agents that can reach mcp.svgproof.com from their shell; in a chat app use upload_logo instead.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | No | The local file name, used to name the result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: the operation is free, the link is one-time and expires in 10 minutes, and the response includes a ready-to-run curl command. The annotations only cover safety profile (non-read-only, non-destructive, non-idempotent), so the expiry/one-time semantics are genuinely new and decision-relevant information.
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?
Three compact sentences with the key facts front-loaded: cost, return value and lifecycle, then next step, then applicability/alternative. No sentence is redundant.
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?
No output schema exists, and the description compensates by describing exactly what is returned (one-time link, 10-minute validity, curl command) and what to do with it. For a one-parameter setup tool, this is complete enough to invoke without further exploration.
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 there is only one optional parameter, so the schema already documents file_name fully. The description implies the file is local and becomes the result name, but adds no format or constraint detail beyond what the schema states. Baseline 3 is appropriate given the schema does the work.
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: returns a one-time upload link plus a curl command for sending a local image. It explicitly distinguishes itself from upload_logo (chat apps) and names vectorize as the downstream step, so an agent can route correctly without opening the schema.
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?
Gives an explicit applicability condition ('For coding agents that can reach mcp.svgproof.com from their shell') and an explicit exclusion with the alternative to use instead ('in a chat app use upload_logo instead'). It also states the required follow-up call (vectorize with the upload_id), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_logoUpload a logo to convertARead-onlyInspect
Free to call. Shows a card in the chat where the user picks a logo file from their device and converts it to SVG (1 credit, charged only when they press Convert and it succeeds). Use it when the user wants to convert an image file they have (attached or on their computer) and you cannot pass a public URL. Options apply to the conversion.
| Name | Required | Description | Default |
|---|---|---|---|
| palette | No | Brand colors, comma-separated hex. | |
| background | No | auto, keep, remove (transparent) or a hex color. | |
| max_colors | No | At most this many flat colors. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the cost model (free to call, 1 credit charged only on a successful user-initiated Convert) and the human-in-the-loop card interaction. The annotations only declare readOnlyHint/openWorldHint; the credit and user-action details are exactly the kind of side-effect context an agent needs before invoking.
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?
Cost and safety-relevant facts are front-loaded ('Free to call'), and the four sentences each carry information. The parenthetical about credit timing and the trailing options sentence are slightly wordy but not wasteful.
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 mechanism, cost, and invocation condition for a tool with no output schema. What is missing is the return contract — whether the resulting SVG comes back as a value, a link, or only appears in the card — which an agent needs to plan follow-up turns.
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%, with palette, background and max_colors fully documented in the schema, so the baseline applies. The only description contribution is 'Options apply to the conversion', which adds no syntax or interaction detail (e.g. whether options are chosen in the card or by the agent).
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 action and mechanism: it renders an in-chat card, the user picks a file from their device, and it is converted to SVG. The clause 'you cannot pass a public URL' implicitly separates it from a URL-based conversion path (e.g. vectorize), so an agent can route between them without opening schemas.
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?
Gives an explicit selection condition — use it when the user has an image file attached or on their computer and no public URL is available. It does not name the alternative sibling (vectorize/create_upload) or say when to avoid this tool, so routing still takes one inference step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vectorizeConvert a logo to SVGAIdempotentInspect
Convert a logo image (PNG, JPEG, WEBP, GIF or BMP, up to 5 MB) to a clean vector. Uses 1 credit per new image; the same image with the same options again within 24 hours is free; a refused or failed conversion is free. Give exactly one of image_url, upload_id or image (a file attached in ChatGPT). Returns a download link (valid 60 minutes) and the node, path and color counts.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | A file the user attached in ChatGPT (filled in by ChatGPT). | |
| scale | No | PNG only: size relative to the image (long side at most 4096 px). | |
| width | No | PNG only: width in pixels. | |
| format | No | Output format (default svg). PNG is rendered from the vector. | |
| palette | No | Brand colors, comma-separated hex (e.g. 141155,03517b,ffffff): every color snaps to the nearest. | |
| file_name | No | Name for the downloaded file, without extension. | |
| image_url | No | Public http(s) URL of the image. | |
| upload_id | No | From create_upload, after the file was uploaded. | |
| background | No | auto (default: a fake checkerboard is removed, a solid background kept), keep, remove (transparent), or a hex color like ffffff. | |
| max_colors | No | Merge the palette down to at most this many flat colors. | |
| include_svg | No | Also return the SVG text (only when it is at most 32 KB). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the credit cost model, the 24-hour free-repeat window, that failed/refused conversions are free, and the 60-minute lifetime of the download link. This is the kind of billing, idempotency and expiry context an agent could not infer from readOnlyHint/destructiveHint alone.
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?
Three dense sentences with no filler: what it does and input limits first, then cost, then the input-source rule and return value. Every clause carries information an agent needs to call it correctly.
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 an 11-parameter, nested-object tool with no output schema, the description covers the input source constraint, the pricing/idempotency model, and the shape of the return (download link plus node/path/color counts). Little an agent needs before calling 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 coverage is 100%, so the baseline is 3, but the description adds a constraint the schema does not enforce: exactly one of the three input sources. That adds real meaning over the structured fields, though the remaining options (scale, width, palette, background, max_colors) are left entirely to the 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?
States a specific verb and resource ('Convert a logo image ... to a clean vector') and immediately enumerates supported input formats and size limit. It is clearly distinguishable from the siblings create_upload and upload_logo, which handle getting a file in rather than vectorizing it.
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 mutual-exclusion rule ('Give exactly one of image_url, upload_id or image') is explicit and actionable, and it links upload_id back to create_upload. It stops short of saying when to prefer this tool over upload_logo or when vectorization is inappropriate for a given image, so it falls below a full 5.
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.
4 tool updates
- First observed
account - First observed
create_upload - First observed
upload_logo - First observed
vectorize
Publisher details
- Operator
- SVGProof
- Operator website
- https://svgproof.com
- Vendor relationship
- Not applicable
- Documentation
- https://svgproof.com/docs/mcp
- Trust center
- Not available
- Restrictions
- https://svgproof.com/pricing
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1618 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.