API and MCP

One request, one SVG. The REST API needs an API key, which uses your credits and includes the commercial licence. Anonymous use works on the website and over MCP, with the same small free allowance; the website is protected by a browser bot check that command-line tools cannot pass.

Generate an SVG

Create a key on your account page after buying credits, then send it as a Bearer token with a JSON body.

curl -s https://inspyry.com/v1/vectors \
  -H 'authorization: Bearer ik_your_key' \
  -H 'content-type: application/json' \
  -d '{"prompt":"a laser-cut mushroom","style":"stencil","colours":1}'

The response contains the SVG text and a permanent link to the file.

{
  "id": "gen_...",
  "svg": "<svg ...>",
  "svg_url": "https://inspyry.com/v1/vectors/gen_.../svg",
  "credits_used": 0,
  "free_left": 2,
  "license": "personal"
}

MCP server

The server speaks MCP over streamable HTTP at https://inspyry.com/mcp. Any client that supports remote HTTP servers can use it, including Claude Code, Claude Desktop, Cursor and your own agents.

With your API key

Your credits pay for each SVG and include the commercial licence. Create a key on your account page. In Claude Code, run:

claude mcp add --transport http inspyry https://inspyry.com/mcp \
  --header "Authorization: Bearer ik_your_key"

In other clients, add this to the MCP servers section of the client configuration:

{
  "mcpServers": {
    "inspyry": {
      "url": "https://inspyry.com/mcp",
      "headers": { "Authorization": "Bearer ik_your_key" }
    }
  }
}

Without a key

Leave out the header to try it with the small free allowance, shared by everyone on the same network. Results are personal use only.

{
  "mcpServers": {
    "inspyry": { "url": "https://inspyry.com/mcp" }
  }
}

Tools

generate_vector takes a prompt and any control below, and returns the SVG as text. Failed or filtered generations are not charged. get_balance returns your credits and the free uses left today. Failures come back as tool errors with the same codes as the REST API; a wrong key is rejected with HTTP 401.

{
  "name": "generate_vector",
  "arguments": {
    "prompt": "a sitting fox",
    "style": "flat-sticker",
    "colours": 4,
    "palette": "earthy"
  }
}

Once connected, ask your agent in plain words, for example: make a one-colour stencil of a mountain range and save it as mountains.svg.

Controls

style
flat-sticker, stencil, line-art, graffiti, tattoo, comic, manga, cartoon, esports-mascot, retro, art-deco, art-nouveau, vaporwave, cyberpunk, woodcut, engraving, stained-glass, papercut, halftone, doodle, ukiyoe, folk-art, tribal, celtic, filigree, pixel, low-poly, isometric, minimal-icon, monoline, geometric, kawaii, nautical, western, tiki
shape
free, circle, rounded-square, shield, die-cut, wreath, hexagon, cameo, banner, speech-bubble, mandala
composition
single, set, pattern, border
detail
low, medium, high
colours
1 to 16. One colour makes a stencil.
palette
pastel, neon, earthy, duotone, retro-cmyk, monochrome, sunset, ocean, or a list of #rrggbb colours
background, outline, aspect, margin, flip
See the OpenAPI spec for every field.

Errors

Errors are { "error": string, "code": string }.

400invalid_requestA control value or the prompt is invalid. Nothing is charged.
401invalid_api_keyThe key is wrong or was replaced.
402payment_requiredNo credits left.
422quality_failed / blocked_promptThe result failed the quality check, or the image service filtered the prompt. Nothing is charged.
429quota_exceeded / attempt_limit / rate_limitedThe free allowance for your network, or its daily attempt limit (failed attempts count), is used up for now.
502generation_failedA temporary problem. Nothing is charged; retry.
503capacity_reached / free_capacity_reachedToday's generation capacity, or the part reserved for free use, is used up.