happytails.ai

Add Image Border

Open Add Image Border on Happytails.ai. This view has the same page content and links, with explicit tool capabilities. Read the processing notes before using a tool.

Tool capabilities

{
  "id": "add-image-border",
  "category": "image-tools",
  "built": true,
  "requirements": "Choose color and width in pixels; expand the canvas evenly; retain transparency inside.",
  "implementation": {
    "fields": [
      {
        "key": "border",
        "label": "Border width (px)",
        "value": 12,
        "type": "number",
        "min": 0,
        "max": 1000,
        "step": 1
      },
      {
        "key": "color",
        "label": "Border color",
        "value": "#ffffff",
        "type": "color"
      }
    ],
    "files": true,
    "input": false,
    "live": true,
    "liveFiles": true,
    "accept": ".png,.jpg,.jpeg,.webp",
    "maxFileBytes": 20971520,
    "note": "Runs on your device. Select an image for an automatic preview; settings update the result. Animated WebP produces one still frame.",
    "experience": {
      "automatic": true,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Your text",
      "placeholder": "Type or paste your input…",
      "help": "Change the input or settings to update your result. Results update as you type. Up to 1,000,000 characters.",
      "helpParts": [
        "Change the input or settings to update your result.",
        "Results update as you type.",
        "Up to 1,000,000 characters."
      ],
      "action": null
    },
    "mode": "automatic",
    "interactive": false
  },
  "execution": "POST /api/v1/tools/add-image-border/run",
  "api": {
    "id": "add-image-border",
    "name": "Add image border",
    "category": "image-tools",
    "description": "Add a solid border without covering your image.",
    "notes": "Runs on your device. Select an image for an automatic preview; settings update the result. Animated WebP produces one still frame.",
    "human_path": "/en/image-tools/add-image-border/",
    "method": "POST",
    "endpoint": "/api/v1/tools/add-image-border/run",
    "schema_url": "/api/v1/tools/add-image-border",
    "input_schema": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "input": {
          "type": "string",
          "maxLength": 1000000,
          "default": "",
          "description": "Plain text input. File tools use files instead unless otherwise documented."
        },
        "options": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "border": {
              "type": "number",
              "description": "Border width (px)",
              "default": 12.0,
              "minimum": 0,
              "maximum": 1000,
              "multipleOf": 1
            },
            "color": {
              "type": "string",
              "description": "Border color",
              "default": "#ffffff"
            }
          }
        },
        "files": {
          "type": "array",
          "maxItems": 1,
          "items": {
            "type": "object",
            "required": [
              "name",
              "base64"
            ],
            "additionalProperties": false,
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 200,
                "description": "Filename only, no path."
              },
              "mime": {
                "type": "string",
                "maxLength": 150
              },
              "bytes": {
                "type": "integer",
                "minimum": 0,
                "description": "Optional decoded byte count; must match content if supplied."
              },
              "base64": {
                "type": "string",
                "contentEncoding": "base64",
                "description": "File bytes as padded base64. Use the tool-specific limits.files_bytes value for the total decoded input size."
              }
            }
          }
        }
      }
    },
    "output_schema": {
      "type": "object",
      "required": [
        "tool",
        "result"
      ],
      "properties": {
        "tool": {
          "type": "string"
        },
        "result": {
          "type": "object",
          "required": [
            "text",
            "files"
          ],
          "properties": {
            "text": {
              "type": [
                "string",
                "null"
              ]
            },
            "data": {
              "description": "Parsed JSON when the textual result is JSON."
            },
            "name": {
              "type": "string"
            },
            "mime": {
              "type": "string"
            },
            "files": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "name",
                  "mime",
                  "bytes",
                  "base64"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "bytes": {
                    "type": "integer"
                  },
                  "base64": {
                    "type": "string",
                    "contentEncoding": "base64"
                  }
                }
              }
            }
          }
        }
      }
    },
    "processing": "Server; same transformation code as browser tools",
    "limits": {
      "request_bytes": 8388608,
      "input_characters": 1000000,
      "files_bytes": 5242880,
      "max_files": 1,
      "timeout_seconds": 12
    }
  },
  "agent_processing": "Server; same transformation code as browser tools",
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}

Page guide

Add a solid border without covering your image.

How to use Add image border
  1. Choose a supported file using the drop area or file picker.
  2. Review the clearly labeled settings. The preview updates automatically.
  3. Compare the result with your original, then download it. Keep the original for further edits.

Useful next steps

What to expect

Add a solid border without covering your image. Choose color and width in pixels; expand the canvas evenly; retain transparency inside.