Skip to main content
Glama

Create image upload link

create_image_upload_link
Idempotent

Upload a local image file with one shell command; its bytes never pass the model.

Use this when your shell reaches the public internet and the PNG/JPEG/WebP (max 5 MB) is a file you can read: Claude Code, Codex, Cursor or a local terminal. If the PerfectVector CLI is installed, use it instead. Not in Claude chat: its sandbox usually can't reach PerfectVector. Returns a ready curl command for a 10-minute, single-use link on PerfectVector's own domain; replace IMAGE_PATH and run it. The upload only stores the image, charges nothing and prints its upload_id; then call check_price with that upload_id, then convert_to_svg. Use a new request_key per image and pass the image's file name as file_name: the SVG is named after it.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "request_key": "<request_key>"
    },
    "name": "create_image_upload_link"
  }
}

Input Schema

NameRequiredDescriptionDefault
file_nameNo
request_keyYes

Output Schema

NameRequiredDescriptionDefault
codeNo
widthNo
heightNo
offsetNo
sha256No
statusNo
releasedNo
svg_textNo
file_nameNo
max_bytesNo
mime_typeNo
retryableNo
error_codeNo
expires_atNo
upload_urlNo
input_bytesNo
next_actionYes
next_offsetNo
request_keyNo
total_bytesNo
download_urlNo
renewal_toolNo
conversion_idNo
upload_methodNo
accepted_typesNo
upload_commandNo
upload_headersNo
credits_chargedNoCredits charged by this call only; not the total.
total_charactersNo
continuation_toolNo
expires_in_secondsNo
poll_after_secondsNo
credits_charged_totalNoAccount's recorded credit spend for this SVG across all calls and clients.
continuation_authorizedNo
credits_charged_this_callNo
download_url_is_temporaryNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the 10-minute single-use link expiry, that the upload charges nothing, that it prints an upload_id, and that the returned curl command must be run with IMAGE_PATH replaced. The idempotency note ('use a new request_key per image') aligns with idempotentHint=true rather than contradicting it.

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

Conciseness4/5

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

The critical constraint (bytes never pass the model) and the invocation method are front-loaded, and each sentence carries information. It is slightly dense with parentheses and alternating use/when-not/next-step clauses, but no sentence is wasted.

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 low-complexity two-parameter tool with an output schema and annotations, the description covers everything an agent needs: prerequisites, exclusions, cost, link lifetime, and the exact next tools to call. Return-value detail is legitimately left to the output schema.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does: request_key must be new per image, and file_name determines the SVG's name. Both of the two parameters are given meaning beyond their bare types and constraints.

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+resource: creates a ready-to-run curl command for uploading a local image without bytes passing through the model. It is clearly distinguishable from siblings like upload_picked_image and vectorize_image because it describes link generation rather than the upload/convert steps themselves.

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 precondition ('your shell reaches the public internet', file readable, PNG/JPEG/WebP max 5 MB), an explicit exclusion ('Not in Claude chat: its sandbox usually can't reach PerfectVector'), and a named alternative (the PerfectVector CLI). It also states the follow-up sequence: check_price then convert_to_svg.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources