{
  "links": {
    "artifactVersion": 2,
    "entrypoint": "https://xcropimage.io/ai/llms.txt",
    "llmsTxt": "https://xcropimage.io/ai/llms.txt",
    "llmsFull": "https://xcropimage.io/ai/llms-full.json",
    "knowledgeGraph": "https://xcropimage.io/ai/knowledge-graph.json",
    "tools": "https://xcropimage.io/ai/tools.json",
    "agents": "https://xcropimage.io/ai/agents.json",
    "ragConfig": "https://xcropimage.io/ai/rag-config.json",
    "aiManifest": "https://xcropimage.io/ai/ai-manifest.json",
    "crawlerSignals": "https://xcropimage.io/ai/crawler-signals.json",
    "citationPolicy": "https://xcropimage.io/ai/citation-policy.json",
    "authoritySignals": "https://xcropimage.io/ai/authority-signals.json"
  },
  "generatedAt": "2026-04-07T23:18:55.797Z",
  "artifactVersion": 2,
  "tools": [
    {
      "toolName": "ImageCropper",
      "description": "Adjust composition and remove unwanted areas before publishing.",
      "endpoint": "https://xcropimage.io/crop",
      "method": "GET",
      "transport": "browser_ui",
      "serverSideApi": false,
      "inputSchema": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "description": "User-selected image files via file input; processed in-browser."
          },
          "options": {
            "type": "object",
            "description": "Tool-specific UI controls (crop box, dimensions, format)."
          }
        },
        "required": [
          "files"
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "blob": {
            "type": "string",
            "format": "binary",
            "description": "Exported image bytes for download."
          },
          "mimeType": {
            "type": "string"
          }
        }
      },
      "exampleUsage": "Open https://xcropimage.io/crop in a browser, select an image, adjust settings, export.",
      "aiUseCase": "Adjust composition and remove unwanted areas before publishing.",
      "limitations": [
        "No HTTP batch API; automation must drive a browser or headless browser.",
        "Subject to browser memory and format decode limits."
      ],
      "hallucinationConstraints": [
        "Do not infer REST paths under /api for image transforms.",
        "Endpoint is a web page URL, not a JSON-RPC or GraphQL endpoint."
      ],
      "expectedOutcome": "User downloads a transformed raster image file locally."
    },
    {
      "toolName": "ImageResizer",
      "description": "Match platform pixel dimensions and reduce file weight.",
      "endpoint": "https://xcropimage.io/resizer",
      "method": "GET",
      "transport": "browser_ui",
      "serverSideApi": false,
      "inputSchema": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "description": "User-selected image files via file input; processed in-browser."
          },
          "options": {
            "type": "object",
            "description": "Tool-specific UI controls (crop box, dimensions, format)."
          }
        },
        "required": [
          "files"
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "blob": {
            "type": "string",
            "format": "binary",
            "description": "Exported image bytes for download."
          },
          "mimeType": {
            "type": "string"
          }
        }
      },
      "exampleUsage": "Open https://xcropimage.io/resizer in a browser, select an image, adjust settings, export.",
      "aiUseCase": "Match platform pixel dimensions and reduce file weight.",
      "limitations": [
        "No HTTP batch API; automation must drive a browser or headless browser.",
        "Subject to browser memory and format decode limits."
      ],
      "hallucinationConstraints": [
        "Do not infer REST paths under /api for image transforms.",
        "Endpoint is a web page URL, not a JSON-RPC or GraphQL endpoint."
      ],
      "expectedOutcome": "User downloads a transformed raster image file locally."
    },
    {
      "toolName": "ImageConverter",
      "description": "Switch between JPG, PNG, WebP, and GIF for web delivery.",
      "endpoint": "https://xcropimage.io/convert",
      "method": "GET",
      "transport": "browser_ui",
      "serverSideApi": false,
      "inputSchema": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "description": "User-selected image files via file input; processed in-browser."
          },
          "options": {
            "type": "object",
            "description": "Tool-specific UI controls (crop box, dimensions, format)."
          }
        },
        "required": [
          "files"
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "blob": {
            "type": "string",
            "format": "binary",
            "description": "Exported image bytes for download."
          },
          "mimeType": {
            "type": "string"
          }
        }
      },
      "exampleUsage": "Open https://xcropimage.io/convert in a browser, select an image, adjust settings, export.",
      "aiUseCase": "Switch between JPG, PNG, WebP, and GIF for web delivery.",
      "limitations": [
        "No HTTP batch API; automation must drive a browser or headless browser.",
        "Subject to browser memory and format decode limits."
      ],
      "hallucinationConstraints": [
        "Do not infer REST paths under /api for image transforms.",
        "Endpoint is a web page URL, not a JSON-RPC or GraphQL endpoint."
      ],
      "expectedOutcome": "User downloads a transformed raster image file locally."
    },
    {
      "toolName": "ImageMerger",
      "description": "Combine multiple images into one export without uploads.",
      "endpoint": "https://xcropimage.io/merge",
      "method": "GET",
      "transport": "browser_ui",
      "serverSideApi": false,
      "inputSchema": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "description": "User-selected image files via file input; processed in-browser."
          },
          "options": {
            "type": "object",
            "description": "Tool-specific UI controls (crop box, dimensions, format)."
          }
        },
        "required": [
          "files"
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "blob": {
            "type": "string",
            "format": "binary",
            "description": "Exported image bytes for download."
          },
          "mimeType": {
            "type": "string"
          }
        }
      },
      "exampleUsage": "Open https://xcropimage.io/merge in a browser, select an image, adjust settings, export.",
      "aiUseCase": "Combine multiple images into one export without uploads.",
      "limitations": [
        "No HTTP batch API; automation must drive a browser or headless browser.",
        "Subject to browser memory and format decode limits."
      ],
      "hallucinationConstraints": [
        "Do not infer REST paths under /api for image transforms.",
        "Endpoint is a web page URL, not a JSON-RPC or GraphQL endpoint."
      ],
      "expectedOutcome": "User downloads a transformed raster image file locally."
    }
  ]
}