# Icon Generator

## Links

- Product page URL: https://www.agentpmt.com/marketplace/product-icon-generator
- Product markdown URL: https://www.agentpmt.com/marketplace/product-icon-generator?format=agent-md
- Product JSON URL: https://www.agentpmt.com/marketplace/product-icon-generator?format=agent-json

## Overview

- Product ID: 695fdbc3b7ea4e3ac1962fe6
- Type: function
- Unit type: request
- Price: 500 credits
- Categories: Video Game Design, Art & Design, Graphic Design & Layout, Image Generation & Manipulation, Brand Asset Management, Vector Graphics & Illustration, UI/UX Design
- Generated at: 2026-07-14T14:15:54.653Z

### Page Description

Build crisp icons, sprites, and game-ready textures at any size from 1 to 4096 pixels. Compose them from rectangles, circles, lines, polygons, arcs, text, and transforms — and get a transparent or solid-background PNG ready to drop into apps, marketplaces, or game projects. A dedicated pixel-art mode produces hard-edged, integer-snapped output for 16×16, 32×32, and 64×64 sprites suitable for Minecraft mod textures, retro UI, deterministic favicons, and other small-format game assets. Every render is deterministic — the same inputs always produce the same PNG — and the returned file_id plugs directly into any downstream tool that accepts an image file_id.

### Agent Description

Render a deterministic PNG icon, sprite, or texture at the requested width and height (1-4096 px). Supports transparent backgrounds via "transparent" or #RRGGBBAA, plus a pixel-art mode that disables anti-aliasing and snaps coordinates to integer pixels for 16×16/32×32/64×64 sprite output. Returns a file_id usable by Minecraft Mod Builder texture.source_file_id, AI Image Creator reference_images, product_image_upload, and any other tool that accepts an image file_id.

## Details

### Details

Build crisp icons, sprites, and game-ready textures at any size from 1 to 4096 pixels. Compose them from rectangles, circles, lines, polygons, arcs, text, and transforms — and get a transparent or solid-background PNG ready to drop into apps, marketplaces, or game projects. A dedicated pixel-art mode produces hard-edged, integer-snapped output for 16×16, 32×32, and 64×64 sprites suitable for Minecraft mod textures, retro UI, deterministic favicons, and other small-format game assets. Every render is deterministic — the same inputs always produce the same PNG — and the returned file_id plugs directly into any downstream tool that accepts an image file_id.

### Actions

- `generate` (5 credits): Render a deterministic PNG and store it for 3 days. This creates one file; idempotent retries return the same file with a fresh 15-minute tenant-scoped signed URL.

### Use Cases

Create marketplace product icons, Build Minecraft and game sprite textures, Design UI iconography at any size, Render brand badges with transparent backgrounds, Compose pixel-art assets deterministically, Produce reference images for image-edit tools, Generate consistent app icon sets at multiple sizes, Render retro 16x16 and 32x32 sprite sheets, Create transparent PNG favicons and small-format icons, Generate Minecraft texture bindings for items, blocks, and entities

### Workflows Using This Tool

No public workflows currently reference this product.

### Related Content

No related content is currently linked to this product.

## Integration Details

### DynamicMCP

- Setup page URL: https://www.agentpmt.com/dynamic-mcp
- Claude setup guide: https://www.agentpmt.com/dynamic-mcp#platform=claude
- ChatGPT setup guide: https://www.agentpmt.com/dynamic-mcp#platform=chatgpt
- Cursor setup guide: https://www.agentpmt.com/dynamic-mcp#platform=cursor
- Windsurf setup guide: https://www.agentpmt.com/dynamic-mcp#platform=windsurf

Use the local router for command-based MCP clients. It forwards requests to `https://api.agentpmt.com/mcp` and does not execute tools locally.

```bash
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

### REST API

The live page renders cURL, Python, JavaScript, and Node.js examples. Logged-in users see those examples prefilled with their own API and budget credentials.

- Purchase endpoint: https://api.agentpmt.com/products/purchase
- Authorization format: `Bearer <base64(apiKey:budgetKey)>`

```bash
curl -X POST "https://api.agentpmt.com/products/purchase" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eW91ci1hcGkta2V5LWhlcmU6eW91ci1idWRnZXQta2V5LWhlcmU=" \
  -d '{
    "product_id": "695fdbc3b7ea4e3ac1962fe6",
    "parameters": {
      "action": "generate",
      "idempotency_key": "example_idempotency_key",
      "width": 2048,
      "height": 2048,
      "background_color": "#FFFFFF",
      "instructions": []
    }
  }'
```

### Autonomous Agents

Autonomous agents can access this tool through AgentAddress credit balances or direct x402 payments. Use the Autonomous Agent API reference for endpoint shapes after choosing the access pattern below.

- Autonomous Agent API reference URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents
- Autonomous Agent API reference markdown URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents?format=agent-md
- Credit-Based Access Using AgentAddress: https://www.agentpmt.com/docs/autonomous-agents/credit-based-tool-usage-with-agentaddress
- AgentAddress is preferred for persistent file access, stored platform state, and maximum tool use ability across repeated calls.
- Direct x402 is for independent one-off tool calls that do not require shared files or stored platform state.
- Direct x402 public payments: USDC on Base, Arbitrum, Optimism, Polygon, and Avalanche.

#### Product Skill Package

This product has a published Agent Skill package for product-specific operating instructions.

- Skill slug: product-icon-generator
- Version: 1.0.0
- Download SKILL.md: https://raw.githubusercontent.com/AgentPMT/agent-skills/main/skills/product-icon-generator/SKILL.md
- Package source: https://github.com/AgentPMT/agent-skills/tree/main/skills/product-icon-generator
- OpenClaw listing: https://clawhub.ai/agentpmt/product-icon-generator
- OpenClaw install: `openclaw skills install product-icon-generator`
- skills.sh install: `npx skills add AgentPMT/agent-skills --skill product-icon-generator`
- Last published: 2026-07-14T04:25:50.036Z

### Schema

#### Parameters

- Schema type: actions

```json
{
  "actions": {
    "generate": {
      "description": "Render a deterministic PNG and store it for 3 days. This creates one file; idempotent retries return the same file with a fresh 15-minute tenant-scoped signed URL.",
      "properties": {
        "idempotency_key": {
          "type": "string",
          "description": "Required UUID. Reuse it only when retrying this exact generation request.",
          "required": true,
          "format": "uuid"
        },
        "width": {
          "type": "integer",
          "description": "Output PNG width in pixels, from 1 to 4096. Defaults to 2048; pixel_art_mode permits at most 256.",
          "required": false,
          "default": 2048,
          "minimum": 1,
          "maximum": 4096
        },
        "height": {
          "type": "integer",
          "description": "Output PNG height in pixels, from 1 to 4096. Defaults to 2048; pixel_art_mode permits at most 256.",
          "required": false,
          "default": 2048,
          "minimum": 1,
          "maximum": 4096
        },
        "pixel_art_mode": {
          "type": "boolean",
          "description": "Disable anti-aliasing and snap coordinates to integer pixels. Text is not allowed in this mode.",
          "required": false
        },
        "continue_on_error": {
          "type": "boolean",
          "description": "Continue after renderer failures only when at least one drawable operation succeeds. Returns fixed, redacted warnings and emits one aggregate operator warning. Structural validation errors always reject the request.",
          "required": false
        },
        "background_color": {
          "type": "string",
          "description": "Canvas color: #RRGGBB, #RRGGBBAA, transparent, or a documented named color.",
          "required": false,
          "default": "#FFFFFF"
        },
        "instructions": {
          "type": "array",
          "description": "Ordered drawing operations with at least one drawable operation. save_state and restore_state must be balanced; at most 8192 point pairs are allowed across the request.",
          "required": true,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "shape_type": {
                "type": "string",
                "description": "Drawing operation. Each operation accepts only its relevant fields.",
                "enum": [
                  "rectangle",
                  "rounded_rectangle",
                  "circle",
                  "ellipse",
                  "line",
                  "polygon",
                  "arc",
                  "text",
                  "path",
                  "save_state",
                  "restore_state",
                  "translate",
                  "rotate",
                  "scale"
                ],
                "required": true
              },
              "x": {
                "type": "number",
                "description": "X coordinate for compatible shapes or transforms.",
                "minimum": -16384,
                "maximum": 16384,
                "required": false
              },
              "y": {
                "type": "number",
                "description": "Y coordinate for compatible shapes or transforms.",
                "minimum": -16384,
                "maximum": 16384,
                "required": false
              },
              "width": {
                "type": "number",
                "description": "Positive rectangle width, at most 16384.",
                "exclusiveMinimum": 0,
                "maximum": 16384,
                "required": false
              },
              "height": {
                "type": "number",
                "description": "Positive rectangle height, at most 16384.",
                "exclusiveMinimum": 0,
                "maximum": 16384,
                "required": false
              },
              "radius": {
                "type": "number",
                "description": "Positive radius for circles, arcs, or rounded rectangles.",
                "exclusiveMinimum": 0,
                "maximum": 16384,
                "required": false
              },
              "radius_x": {
                "type": "number",
                "description": "Positive horizontal ellipse radius.",
                "exclusiveMinimum": 0,
                "maximum": 16384,
                "required": false
              },
              "radius_y": {
                "type": "number",
                "description": "Positive vertical ellipse radius.",
                "exclusiveMinimum": 0,
                "maximum": 16384,
                "required": false
              },
              "points": {
                "type": "array",
                "description": "Coordinate pairs for line or polygon; at most 2048 pairs per instruction.",
                "minItems": 2,
                "maxItems": 2048,
                "required": false,
                "items": {
                  "type": "array",
                  "minItems": 2,
                  "maxItems": 2,
                  "items": {
                    "type": "number",
                    "minimum": -16384,
                    "maximum": 16384
                  }
                }
              },
              "fill": {
                "type": "string",
                "description": "Fill color for compatible painted shapes.",
                "minLength": 1,
                "maxLength": 64,
                "required": false
              },
              "stroke": {
                "type": "string",
                "description": "Stroke color for compatible painted shapes.",
                "minLength": 1,
                "maxLength": 64,
                "required": false
              },
              "stroke_width": {
                "type": "number",
                "description": "Positive stroke width, at most 4096.",
                "exclusiveMinimum": 0,
                "maximum": 4096,
                "required": false
              },
              "text": {
                "type": "string",
                "description": "Text content for a text instruction.",
                "minLength": 1,
                "maxLength": 10000,
                "required": false
              },
              "font_size": {
                "type": "number",
                "description": "Positive text size, at most 4096.",
                "exclusiveMinimum": 0,
                "maximum": 4096,
                "required": false
              },
              "font_family": {
                "type": "string",
                "description": "Installed font family name.",
                "minLength": 1,
                "maxLength": 255,
                "required": false
              },
              "font_weight": {
                "type": "string",
                "description": "Text font weight.",
                "enum": [
                  "normal",
                  "bold"
                ],
                "required": false
              },
              "text_align": {
                "type": "string",
                "description": "Horizontal text alignment.",
                "enum": [
                  "left",
                  "center",
                  "right"
                ],
                "required": false
              },
              "start_angle": {
                "type": "number",
                "description": "Arc start angle in degrees.",
                "minimum": -360000,
                "maximum": 360000,
                "required": false
              },
              "end_angle": {
                "type": "number",
                "description": "Arc end angle in degrees.",
                "minimum": -360000,
                "maximum": 360000,
                "required": false
              },
              "path": {
                "type": "string",
                "description": "SVG path data capped at 8,192 parsed segments; parsed coordinates must be finite and between -16,384 and 16,384.",
                "minLength": 1,
                "maxLength": 100000,
                "required": false
              },
              "opacity": {
                "type": "number",
                "description": "Alpha multiplier for compatible paint operations.",
                "minimum": 0,
                "maximum": 1,
                "required": false
              },
              "rotate": {
                "type": "number",
                "description": "Rotation angle in degrees for rotate.",
                "minimum": -360000,
                "maximum": 360000,
                "required": false
              },
              "scale_x": {
                "type": "number",
                "description": "Non-zero horizontal scale from -100 to 100.",
                "minimum": -100,
                "maximum": 100,
                "required": false
              },
              "scale_y": {
                "type": "number",
                "description": "Non-zero vertical scale from -100 to 100.",
                "minimum": -100,
                "maximum": 100,
                "required": false
              },
              "anti_alias": {
                "type": "boolean",
                "description": "Per-instruction anti-alias override for compatible paint operations.",
                "required": false
              }
            }
          },
          "minItems": 1,
          "maxItems": 256
        }
      }
    }
  }
}
```

### Usage Instructions

# Icon Generator

Render deterministic PNG icons, sprites, textures, and small illustrations from
bounded drawing instructions. Generation creates one tenant-owned File Manager
record retained for 3 days.

## Action: `generate`

Required:

- `idempotency_key`: UUID. Reuse it only for an exact retry.
- `instructions`: 1-256 drawing operations, including at least one drawable
  operation, with at most 8192 coordinate pairs across the request.

Optional:

- `width`, `height`: 1-4096 pixels, default 2048. Both are limited to 256 when
  `pixel_art_mode` is true.
- `pixel_art_mode`: disables anti-aliasing, snaps coordinates to integer pixels,
  and rejects text instructions.
- `continue_on_error`: records fixed, redacted renderer warnings and continues
  after a rendering failure only when at least one drawable operation succeeds.
  All skipped operations produce one aggregate operator warning. Structural
  validation errors always reject the request.
- `background_color`: `#RRGGBB`, `#RRGGBBAA`, `transparent`, or a documented
  named color; default `#FFFFFF`.

An idempotent retry returns the original `file_id` with a newly generated,
tenant-scoped signed URL. A reused UUID with a different payload is rejected. An
ambiguous storage outcome is never repeated automatically.

## Drawing operations

Every instruction requires canonical `shape_type`. Unexpected fields are
rejected, including fields that belong to another shape.
Every drawable instruction must have paint whose effective alpha is non-zero;
`transparent`, `#RRGGBB00`, and `opacity: 0` are not usable drawing paint.

- `rectangle`: `x`, `y`, `width`, `height`; requires `fill` or `stroke`.
- `rounded_rectangle`: rectangle fields plus `radius`; requires paint.
- `circle`: center `x`, `y`, `radius`; requires paint.
- `ellipse`: center `x`, `y`, `radius_x`, `radius_y`; requires paint.
- `line`: at least two `points`; accepts `stroke`, `stroke_width`, `opacity`,
  and `anti_alias`.
- `polygon`: at least three `points`; requires `fill` or `stroke`.
- `arc`: center/radius plus `start_angle`, `end_angle`, and stroke fields.
- `text`: requires `text`; accepts `x`, `y`, `fill`, `font_size`,
  `font_family`, `font_weight` (`normal` or `bold`), and `text_align`. The font
  family must be installed on the renderer.
- `path`: requires an SVG path string and `fill` or `stroke`. Commands M, L, H,
  V, C, S, Q, T, A, and Z are supported.
- `save_state`, `restore_state`: bracket canvas state. Every save must have a
  matching restore and a restore cannot occur first.
- `translate`: requires `x` or `y`.
- `rotate`: requires `rotate`; optional `x` and `y` select its center.
- `scale`: requires non-zero `scale_x` or `scale_y` in the range -100 to 100.

Coordinates are limited to -16384 through 16384. Paths are capped at 100,000
characters and 8192 parsed segments; every parsed path coordinate uses the same
finite coordinate bound. Each line/polygon accepts at most 2048 distinct-capable
point pairs. Colors are strictly parsed. `opacity` is a 0-1 multiplier on the
original alpha channel. Pixel-art geometry that collapses after integer snapping
is rejected instead of producing a blank operation.

## Examples

Smooth 256x256 icon:

```json
{"action":"generate","idempotency_key":"6ace54fe-f93d-4ba2-bfb8-98d4995120d8","width":256,"height":256,"background_color":"transparent","instructions":[{"shape_type":"circle","x":128,"y":128,"radius":100,"fill":"#2563EB"},{"shape_type":"path","path":"M78 130 L112 164 L180 88","stroke":"#FFFFFF","stroke_width":18}]}
```

16x16 pixel-art sprite:

```json
{"action":"generate","idempotency_key":"f7036c19-9013-42ea-8c88-6b0ff305455e","width":16,"height":16,"pixel_art_mode":true,"background_color":"transparent","instructions":[{"shape_type":"rectangle","x":7,"y":1,"width":2,"height":9,"fill":"#C0C0C0"},{"shape_type":"rectangle","x":5,"y":9,"width":6,"height":1,"fill":"#8B4513"},{"shape_type":"rectangle","x":7,"y":10,"width":2,"height":5,"fill":"#8B4513"}]}
```

## Response and retention

The response includes `file_id`, `filename`, `signed_url`,
`signed_url_expires_in` (`15 minutes`), `size_bytes`, `expiration_date`,
`icon_details`, and `warnings`. The backing file expires after 3 days; the
signed URL is intentionally much shorter lived and is not persisted in the
idempotency record. An idempotent replay adds `idempotent_replay: true`.

Stable idempotency/storage failures include `IDEMPOTENCY_KEY_REUSED`,
`IDEMPOTENCY_IN_PROGRESS`, `IDEMPOTENCY_OUTCOME_UNKNOWN`, and
`IDEMPOTENCY_STORE_UNAVAILABLE`. Rendering/storage failures use
`ICON_RENDER_INSTRUCTION_INVALID`, `ICON_RENDER_FAILED`,
`ICON_STORAGE_UPLOAD_FAILED`, and `ICON_STORAGE_REPLAY_FAILED`. If the outcome
is unknown, inspect File Manager before deciding whether to submit a new UUID.

### Frequently Asked Questions

#### How do I connect this tool to an external agent?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

You can install the local MCP server by opening a terminal and running:

```
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

This will connect you to local agents like Claude Code, Windsurf, Grok Build, Cursor, etc.

Alternatively you can connect to the hosted version with this config block, no installation required:

```
{
  "mcpServers": {
    "agentpmt": {
      "type": "streamable-http",
      "url": "https://api.agentpmt.com/mcp",
      "headers": {
        "Authorization": "Bearer <AGENTPMT_BEARER_TOKEN>",
        "x-instance-metadata": "{\"client\":\"generic-mcp\",\"platform\":\"remote\"}"
      }
    }
  }
}
```

[View MCP Connection Instructions](/docs/mcp-reference/connection) for more details.

#### How does an external agent use this tool?

- Page URL: https://www.agentpmt.com/faq
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md

After the external agent is connected to an Agent Group that can use this tool, paste this prompt into the agent:

> Use the AgentPMT-Tool-Search-and-Execution tool. First call action 'get\_instructions' so you know how to use the tool search interface. Then call action 'get\_schema' with tool\_id 695fdbc3b7ea4e3ac1962fe6 ("Icon Generator"). After reading the schema and any returned instructions, tell me what this tool can do, we are going to be using it

The agent should fetch the tool schema first, collect the required parameters for your request, and then call the tool through AgentPMT.

### Dependencies

This product has no public dependency products.