{
  "id": "pdf.watermark",
  "object": "tool",
  "name": "Watermark PDF",
  "summary": "Stamp text or a logo on pages.",
  "description": "Adds a text watermark (like CONFIDENTIAL or DRAFT) or an image watermark (PNG/JPEG logo) to every page or the pages you list, with opacity, colour, rotation and position.",
  "category": "documents",
  "hosted_by": "Opentools",
  "runtime": "worker",
  "side_effects": false,
  "status": "live",
  "credits": 1,
  "price": "$0.0010",
  "providers": [
    {
      "id": "opentools",
      "name": "Opentools",
      "price": "$0.0010"
    }
  ],
  "mcp_name": "pdf_watermark",
  "input_schema": {
    "type": "object",
    "properties": {
      "file": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public http(s) URL of the file"
              }
            },
            "required": [
              "url"
            ]
          },
          {
            "type": "object",
            "properties": {
              "file_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "An id returned by POST /v1/files"
              }
            },
            "required": [
              "file_id"
            ]
          },
          {
            "type": "object",
            "properties": {
              "base64": {
                "type": "string",
                "description": "Base64-encoded file bytes (up to 10 MB)"
              },
              "name": {
                "type": "string",
                "description": "File name, e.g. invoice.pdf"
              },
              "content_type": {
                "type": "string"
              }
            },
            "required": [
              "base64",
              "name"
            ]
          },
          {
            "type": "object",
            "properties": {
              "connection": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64,
                "description": "A storage connection id or name (see storage.connections)"
              },
              "path": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024,
                "description": "Path of the file in that connection, e.g. reports/q3.pdf"
              }
            },
            "required": [
              "connection",
              "path"
            ]
          }
        ],
        "x-file": true,
        "description": "The PDF"
      },
      "text": {
        "description": "Watermark text (Latin characters). Give this or image.",
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      },
      "image": {
        "description": "PNG or JPEG watermark image. Give this or text.",
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "Public http(s) URL of the file"
              }
            },
            "required": [
              "url"
            ]
          },
          {
            "type": "object",
            "properties": {
              "file_id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
                "description": "An id returned by POST /v1/files"
              }
            },
            "required": [
              "file_id"
            ]
          },
          {
            "type": "object",
            "properties": {
              "base64": {
                "type": "string",
                "description": "Base64-encoded file bytes (up to 10 MB)"
              },
              "name": {
                "type": "string",
                "description": "File name, e.g. invoice.pdf"
              },
              "content_type": {
                "type": "string"
              }
            },
            "required": [
              "base64",
              "name"
            ]
          },
          {
            "type": "object",
            "properties": {
              "connection": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64,
                "description": "A storage connection id or name (see storage.connections)"
              },
              "path": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1024,
                "description": "Path of the file in that connection, e.g. reports/q3.pdf"
              }
            },
            "required": [
              "connection",
              "path"
            ]
          }
        ],
        "x-file": true
      },
      "font_size": {
        "default": 60,
        "description": "Text size in points",
        "type": "number",
        "minimum": 4,
        "maximum": 400
      },
      "color": {
        "default": "#FF0000",
        "description": "Text colour like #FF0000",
        "type": "string",
        "pattern": "^#[0-9a-fA-F]{6}$"
      },
      "opacity": {
        "default": 0.25,
        "description": "0 (invisible) to 1 (solid)",
        "type": "number",
        "minimum": 0.01,
        "maximum": 1
      },
      "rotation": {
        "description": "Rotation in degrees, counter-clockwise. Diagonal follows the page diagonal if omitted; 0 otherwise.",
        "type": "number",
        "minimum": -360,
        "maximum": 360
      },
      "position": {
        "default": "diagonal",
        "description": "Where to put the watermark",
        "type": "string",
        "enum": [
          "center",
          "diagonal",
          "top-left",
          "top-right",
          "bottom-left",
          "bottom-right"
        ]
      },
      "scale": {
        "default": 0.4,
        "description": "Image watermark width as a fraction of page width",
        "type": "number",
        "minimum": 0.01,
        "maximum": 1
      },
      "margin": {
        "default": 36,
        "description": "Distance from the edge for corner positions, in points",
        "type": "number",
        "minimum": 0,
        "maximum": 500
      },
      "pages": {
        "description": "Pages to watermark, like \"1,3-5\". All pages if omitted.",
        "type": "string",
        "maxLength": 500
      }
    },
    "required": [
      "file"
    ]
  },
  "kind": "tool"
}