← WebMCP Directory

logo.allsvgicons.com

logo.allsvgicons.com

live Unverified (seed import) Productivity & Business 9 tools imperative implementation

Free SVG logo editor with WebMCP tools an AI agent can drive directly, built for the OpenAI WebMCP Challenge.

First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com

Answer 4 · Act 4 · Transact 1 · Score: Not yet scored

Tool inspector

replace_logo_maker_state

act imperative

Replaces the entire editor contents with a structured logo state (canvasSize, background, and layers array) and returns a share code, share URL, safeZoneViolations, lowContrastLayers, and optional SVG. Full replace: any layer field you omit reverts to its default, it does not carry over from the current state. For any incremental edit (including toggling overwriteFill/overwriteStroke without losing the stored color) use update_logo_maker_state's updateLayers instead, which patches only the fields you send. Reserve this tool for loading a complete, fully-specified logo from scratch. For a gradient icon set fillType: "linear" or "radial" with fillStops (and overwriteFill: true) rather than writing customSvg.

Input schema

PropertyTypeRequiredDescription
canvasSize object no —
background object no Logo background configuration. Supported types: solid, gradient, radial, split.
layers array yes Logo layers, bottom layer first.
showSafeZone boolean no Show/hide Android & iOS app icon safe zone keyline overlay.
showDesignGrid boolean no Show/hide the Apple/iOS icon keyline alignment grid overlay.
safeZoneRatio number no Inner safe-zone circle diameter ratio: the area critical icon details must stay within to survive any launcher mask (default 0.611, Android adaptive icons strict spec). A fixed outer guide at 75% (practical logo extent) is always shown alongside it.
includeSvg boolean no Return exported SVG markup in response.
Raw JSON schema
{
  "type": "object",
  "properties": {
    "canvasSize": {
      "type": "object",
      "properties": {
        "width": {
          "type": "number",
          "description": "Canvas width in pixels."
        },
        "height": {
          "type": "number",
          "description": "Canvas height in pixels."
        }
      }
    },
    "background": {
      "type": "object",
      "description": "Logo background configuration. Supported types: solid, gradient, radial, split.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "solid",
            "gradient",
            "radial",
            "split"
          ]
        },
        "splitLayout": {
          "type": "string",
          "enum": [
            "halves",
            "thirds",
            "quadrant",
            "pinwheel"
          ],
          "description": "Hard-edged colour blocks, used when type is \"split\". Colours come from gradientColors (halves 2, thirds 3, quadrant and pinwheel 4, cycled if fewer). halves and thirds run left to right, or top to bottom when gradientDirection is \"to bottom\". quadrant order: top-left, top-right, bottom-right, bottom-left. pinwheel order: top, right, bottom, left. Use this instead of stacking oversized square layers."
        },
        "solidColor": {
          "type": "string",
          "description": "Hex or CSS color for solid background."
        },
        "gradientColors": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Array of colors for gradient/radial background."
        },
        "gradientPositions": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "Array of stop percentages (0 to 100) for each color."
        },
        "gradientDirection": {
          "type": "string",
          "description": "CSS gradient direction, e.g. \"to right\", \"to bottom right\", \"to top\"."
        },
        "noise": {
          "type": "number",
          "description": "Noise texture intensity from 0 to 1."
        },
        "borderRadius": {
          "type": "number",
          "description": "Corner radius in pixels, clamped to >=0 (no fixed max). Only affects shape: \"rectangle\". Ignored when shape is \"circle\" or \"squircle\": those always use a full round/squircle clip regardless of this value."
        },
        "pattern": {
          "type": "string",
          "enum": [
            "none",
            "grid",
            "dots",
            "checker",
            "lines",
            "diagonal",
            "circles",
            "zigzag"
          ],
          "description": "Pattern texture overlay."
        },
        "patternColor": {
          "type": "string",
          "description": "Pattern overlay color."
        },
        "patternOpacity": {
          "type": "number",
          "description": "Pattern overlay opacity (0 to 1)."
        },
        "shape": {
          "type": "string",
          "enum": [
            "rectangle",
            "circle",
            "squircle"
          ],
          "description": "Canvas clipping shape."
        },
        "radialCenterX": {
          "type": "number",
          "description": "Radial gradient center X % (0 to 100)."
        },
        "radialCenterY": {
          "type": "number",
          "description": "Radial gradient center Y % (0 to 100)."
        },
        "radialRadius": {
          "type": "number",
          "description": "Radial gradient radius % (0 to 100)."
        },
        "borderWidth": {
          "type": "number",
          "description": "Border outline width in pixels (0 to 24)."
        },
        "borderColor": {
          "type": "string",
          "description": "Border outline hex/CSS color."
        },
        "borderStyle": {
          "type": "string",
          "enum": [
            "solid",
            "dashed",
            "dotted",
            "double"
          ],
          "description": "Border outline style."
        }
      }
    },
    "layers": {
      "type": "array",
      "description": "Logo layers, bottom layer first.",
      "items": {
        "type": "object",
        "description": "Logo layer object.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Optional layer ID (UUID generated if omitted)."
          },
          "iconName": {
            "type": "string",
            "description": "Icon identifier in pack:name format (e.g. \"lucide:sparkles\", \"solar:shield-bold\", \"ph:coffee-fill\")."
          },
          "url": {
            "type": "string",
            "description": "Direct SVG URL. If omitted, resolved from iconName."
          },
          "customSvg": {
            "type": "string",
            "description": "Raw SVG markup for a custom shape layer. When set, this overrides icon-based rendering for the layer: iconName still doubles as a label/identity. Pass an empty string to clear it back to icon-based rendering."
          },
          "x": {
            "type": "number",
            "description": "Horizontal position as a percentage (0-100) of canvas width, from the left edge. 50 is always center, on any canvas size. Omit to default to 50 (center)."
          },
          "y": {
            "type": "number",
            "description": "Vertical position as a percentage (0-100) of canvas height, from the top edge. 50 is always center, on any canvas size. Omit to default to 50 (center)."
          },
          "scale": {
            "type": "number",
            "description": "Scale multiplier: 1 draws the icon in a 200 px box on the canvas (default 1.6 = 320 px, canvas is 512 px). Check bounds in get_logo_maker_state after setting it."
          },
          "scaleY": {
            "type": "number",
            "description": "Vertical scale multiplier. Omit for a square box (same as scale). Use scale 3 and scaleY 0.4 for a colour band, for example. Pass null to go back to square."
          },
          "rotation": {
            "type": "number",
            "description": "Rotation angle in degrees (-180 to 180)."
          },
          "fill": {
            "type": "string",
            "description": "Fill hex/CSS color or \"none\"."
          },
          "fillType": {
            "type": "string",
            "enum": [
              "solid",
              "linear",
              "radial"
            ],
            "description": "Fill paint type. \"linear\" or \"radial\" use fillStops and ignore fill. Needs overwriteFill: true. Use this instead of customSvg for a gradient icon."
          },
          "fillStops": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Gradient colours in order (2 or more), e.g. [\"#ff6b6b\", \"#feca57\"]."
          },
          "fillPositions": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Stop offsets in percent, one per colour. Omit for evenly spaced."
          },
          "fillAngle": {
            "type": "number",
            "description": "Linear gradient angle in degrees, CSS convention: 0 = to top, 90 = to right (default)."
          },
          "stroke": {
            "type": "string",
            "description": "Stroke hex/CSS color or \"none\"."
          },
          "strokeWidth": {
            "type": "number",
            "description": "Stroke width override in pixels."
          },
          "strokeDasharray": {
            "type": "string",
            "description": "Stroke dash pattern, e.g. \"none\", \"6 4\", \"2 4\"."
          },
          "overwriteFill": {
            "type": "boolean",
            "description": "Force overwrite icon original fill. Only visible if the icon itself uses a fill paint: many icon packs (e.g. Lucide) are stroke-only outline icons where a fill override has no visible effect; if the color doesn't seem to apply, try overwriteStroke instead."
          },
          "overwriteStroke": {
            "type": "boolean",
            "description": "Force overwrite icon original stroke. Only visible if the icon itself uses a stroke paint: many icon packs are solid fill-only icons with no stroke where a stroke override has no visible effect; if the color doesn't seem to apply, try overwriteFill instead."
          },
          "opacity": {
            "type": "number",
            "description": "Layer opacity from 0 to 1."
          },
          "blendMode": {
            "type": "string",
            "enum": [
              "normal",
              "multiply",
              "screen",
              "overlay",
              "darken",
              "lighten",
              "color-dodge",
              "color-burn",
              "hard-light",
              "soft-light",
              "difference",
              "exclusion"
            ],
            "description": "CSS mix-blend-mode for how this layer's pixels combine with what's beneath it."
          },
          "animationType": {
            "type": "string",
            "enum": [
              "none",
              "rotate",
              "float",
              "pulse",
              "sway",
              "custom"
            ],
            "description": "[Experimental] Looping CSS animation for this layer. Niche feature, most logos should stay static: only set this when the user explicitly asks for motion."
          },
          "animationDuration": {
            "type": "number",
            "description": "Animation duration in seconds."
          },
          "animationTarget": {
            "type": "string",
            "description": "CSS selector matched against the icon's own SVG children (e.g. \"path:nth-of-type(2)\", \"circle\") to animate only that part instead of the whole icon. Omit to animate the whole icon."
          },
          "animationCustomKeyframes": {
            "type": "string",
            "description": "Raw CSS @keyframes stops body, without the @keyframes wrapper. Only used when animationType is \"custom\" (e.g. \"0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); }\")."
          },
          "visible": {
            "type": "boolean",
            "description": "Layer visibility."
          },
          "locked": {
            "type": "boolean",
            "description": "Lock layer from canvas drag/selection."
          },
          "shadowColor": {
            "type": "string",
            "description": "Drop shadow color."
          },
          "shadowBlur": {
            "type": "number",
            "description": "Drop shadow blur radius in pixels (0 for hard shadow)."
          },
          "shadowOffsetX": {
            "type": "number",
            "description": "Drop shadow horizontal offset."
          },
          "shadowOffsetY": {
            "type": "number",
            "description": "Drop shadow vertical offset."
          },
          "shadowOpacity": {
            "type": "number",
            "description": "Drop shadow opacity from 0 to 1."
          }
        },
        "required": [
          "iconName"
        ]
      }
    },
    "showSafeZone": {
      "type": "boolean",
      "description": "Show/hide Android & iOS app icon safe zone keyline overlay."
    },
    "showDesignGrid": {
      "type": "boolean",
      "description": "Show/hide the Apple/iOS icon keyline alignment grid overlay."
    },
    "safeZoneRatio": {
      "type": "number",
      "description": "Inner safe-zone circle diameter ratio: the area critical icon details must stay within to survive any launcher mask (default 0.611, Android adaptive icons strict spec). A fixed outer guide at 75% (practical logo extent) is always shown alongside it."
    },
    "includeSvg": {
      "type": "boolean",
      "description": "Return exported SVG markup in response."
    }
  },
  "required": [
    "layers"
  ]
}

Similar websites

econsor.de

econsor.de

German digital agency building portals, e-commerce sites and online marketing, combining strategy, design and AI to grow clients' visibility and customer base.

live Unverified Productivity & Business Transact tools
143 tools A0 / Act142 / T1 Not yet scored Seen 2026-11-05
econsor_click_search econsor_click_image econsor_click_menu econsor_click_burger_menu_icon econsor_click_previous_button
Inspect tools
inkframe-eta.vercel.app

inkframe-eta.vercel.app

Browser-native Elah video editor for 9:16 and 16:9 exports

live Unverified Productivity & Business Transact tools
87 tools A12 / Act71 / T4 Not yet scored Seen 2026-11-05
get_capabilities list_templates navigate_workspace open_template editor_inspect_video_moments
Inspect tools
agentdesk-demo.vercel.app

agentdesk-demo.vercel.app

Meridian Ops

live Unverified Productivity & Business Transact tools
83 tools A43 / Act24 / T16 Not yet scored Seen 2026-11-05
find_capabilities invoke_capability get_context get_action_status search_customers
Inspect tools
eworker.ca

eworker.ca

E-Worker is business infrastructure powered by AI, with focused apps and connected business work.

live Unverified Productivity & Business
73 tools A10 / Act63 / T0 Not yet scored Seen 2026-11-05
eworker_site_status eworker_list_apps eworker_resolve_app eworker_open_app ewdoc_status
Inspect tools

Related on Influzer