{
  "id": "pdf.from_images",
  "object": "tool",
  "name": "Images to PDF",
  "summary": "Photos and scans into one PDF.",
  "description": "Puts images into one PDF, one per page. Pages can match each image or be A4 or Letter, with orientation and margins. Takes JPEG and PNG, plus WebP, AVIF and GIF (converted first).",
  "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_from_images",
  "input_schema": {
    "type": "object",
    "properties": {
      "files": {
        "minItems": 1,
        "maxItems": 200,
        "type": "array",
        "items": {
          "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": "A file: { url }, { file_id }, { base64, name } or { connection, path } from connected storage"
        },
        "description": "Images, in page order"
      },
      "page_size": {
        "default": "fit",
        "description": "fit makes each page the size of its image",
        "type": "string",
        "enum": [
          "fit",
          "a4",
          "letter"
        ]
      },
      "orientation": {
        "default": "auto",
        "description": "For A4/Letter. auto turns the page to match each image.",
        "type": "string",
        "enum": [
          "auto",
          "portrait",
          "landscape"
        ]
      },
      "margin": {
        "default": 0,
        "description": "Margin around each image in points (72 = 1 inch)",
        "type": "number",
        "minimum": 0,
        "maximum": 200
      },
      "name": {
        "default": "images.pdf",
        "description": "Name of the output file",
        "type": "string",
        "maxLength": 120
      }
    },
    "required": [
      "files"
    ]
  },
  "kind": "tool"
}