Happytails.aiFree tools. No account needed.

Add image border | agent view

The same page content and links, with explicit tool capabilities. Tools marked with an API can run directly through HTTP. Other tools require the browser interface or are not connected yet.

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,
      "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.",
      "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.

Useful next steps

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.

What to expect

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