{
  "generatedAt": "2026-10-03T16:18:42.749Z",
  "servers": [
    {
      "id": "uuid-forge",
      "name": "apidx UUID Generator",
      "description": "Random UUID v4 (RFC 9562) as an HTTP API: 1-100 UUIDs per call, in uuid, URN, hex or integer form. An alternative to the X Pay UUID listing on x402 Bazaar.",
      "url": "https://uuid-forge.saastemly.com",
      "mcp": "https://uuid-forge.saastemly.com/mcp",
      "llmsTxt": "https://uuid-forge.saastemly.com/llms.txt",
      "openapi": "https://uuid-forge.saastemly.com/openapi.json",
      "x402": "https://uuid-forge.saastemly.com/.well-known/x402",
      "tags": [
        "uuid",
        "id",
        "generator",
        "random",
        "rfc9562"
      ],
      "routes": [
        {
          "route": "GET /v1/uuid",
          "description": "Returns 1-100 random UUID v4 strings (RFC 9562): ?count=1..100 (default 1), ?format=uuid|urn|hex|int (default uuid).",
          "priceUsd": 0.0017,
          "freePerIpPerDay": 3
        },
        {
          "route": "GET /x402/uuid",
          "description": "The same UUID generation on the x402 face: the body adds network/asset (base/USDC) as in the reference x402 listing's response.",
          "priceUsd": 0.0017,
          "freePerIpPerDay": 3
        }
      ]
    },
    {
      "id": "crawl4agent",
      "name": "Crawl4Agent",
      "description": "crawl4ai-compatible web crawler API: POST a URL, get clean LLM-ready Markdown with fit_markdown pruning. No Python, no keys, x402 per call.",
      "url": "https://crawl4agent.saastemly.com",
      "mcp": "https://crawl4agent.saastemly.com/mcp",
      "llmsTxt": "https://crawl4agent.saastemly.com/llms.txt",
      "openapi": "https://crawl4agent.saastemly.com/openapi.json",
      "x402": "https://crawl4agent.saastemly.com/.well-known/x402",
      "tags": [
        "crawler",
        "markdown",
        "scraping",
        "llm",
        "api"
      ],
      "routes": [
        {
          "route": "POST /md",
          "description": "Turn a URL into LLM-ready Markdown with crawl4ai's /md contract: f raw|fit (raw or pruned fit_markdown), q optional user query, c cache flag. Answers {url, filter, query, cache, markdown, success}.",
          "priceUsd": 0.008,
          "freePerIpPerDay": 3
        }
      ]
    },
    {
      "id": "lensaocr",
      "name": "LensaOCR",
      "description": "Tesseract-compatible OCR over HTTP: send an image, get its text and word boxes in Tesseract's txt, TSV, hOCR and ALTO formats.",
      "url": "https://lensaocr.saastemly.com",
      "mcp": "https://lensaocr.saastemly.com/mcp",
      "llmsTxt": "https://lensaocr.saastemly.com/llms.txt",
      "openapi": "https://lensaocr.saastemly.com/openapi.json",
      "x402": "https://lensaocr.saastemly.com/.well-known/x402",
      "tags": [
        "ocr",
        "tesseract",
        "text-recognition"
      ],
      "routes": [
        {
          "route": "POST /v1/ocr",
          "description": "Reads an image's text and word boxes (Tesseract txt, TSV, hOCR and ALTO).",
          "priceUsd": 0.005,
          "freePerIpPerDay": 3
        }
      ]
    },
    {
      "id": "mem0-cloud",
      "name": "Mem0 Cloud",
      "description": "A hosted agent-memory API shaped like mem0's REST API (an alternative to running mem0 yourself): add conversations, search, list, get and delete memories. No vector database or LLM to run. Memories are private to the secret memory_key you send; kept 365 days.",
      "url": "https://mem0-cloud.saastemly.com",
      "mcp": "https://mem0-cloud.saastemly.com/mcp",
      "llmsTxt": "https://mem0-cloud.saastemly.com/llms.txt",
      "openapi": "https://mem0-cloud.saastemly.com/openapi.json",
      "x402": "https://mem0-cloud.saastemly.com/.well-known/x402",
      "tags": [
        "memory",
        "agents",
        "mem0",
        "rag",
        "vector"
      ],
      "routes": [
        {
          "route": "POST /v3/memories/add",
          "description": "Store memories from a conversation, like mem0's add: an AI model extracts durable facts about the user from the messages (or, with infer=false, stores each message as is), embeds them and saves them privately under your memory_key (a secret string you generate; required). Identical facts are stored once. Needs at least one of user_id, agent_id, app_id, run_id. Memories are kept for 365 days. Returns {event_id, status, results:[{id, memory, event: ADD|NONE}]}.",
          "priceUsd": 0.008,
          "freePerIpPerDay": 3
        },
        {
          "route": "POST /v3/memories/search",
          "description": "Search your stored memories by meaning, like mem0's search: embeds the query and returns the closest memories with a relevance score from 0 to 1. Only memories stored under the same memory_key (your secret string; required) are searched. filters must name at least one of user_id, agent_id, app_id, run_id. Returns {results:[{id, memory, score, metadata, ...}]}.",
          "priceUsd": 0.004,
          "freePerIpPerDay": 3
        },
        {
          "route": "GET /v1/memories",
          "description": "Read your stored memories, like mem0's get memory and get all memories. With memory_id: returns that one memory (404 if it is not yours). Without it: returns a page {count, next, previous, results} of the memories matching user_id, agent_id, app_id or run_id (at least one; \"*\" matches any value), newest first. Requires your memory_key (a secret string you generate): a different key sees nothing.",
          "priceUsd": 0.002,
          "freePerIpPerDay": 3
        },
        {
          "route": "DELETE /v1/memories",
          "description": "Delete your stored memories, like mem0's delete memory and delete all memories. With memory_id: deletes that one memory (404 if it is not yours). Without it: deletes up to 200 of your memories matching user_id, agent_id, app_id or run_id (at least one), and says if more remain. Requires your memory_key (a secret string you generate): other keys cannot delete your memories.",
          "priceUsd": 0.002,
          "freePerIpPerDay": 3
        }
      ]
    },
    {
      "id": "puptra-pdf-snapshot",
      "name": "Puptra PDF Snapshot",
      "description": "One-call URL-to-PDF and full-page screenshot API with Puppeteer's page.pdf()/page.screenshot() semantics — an alternative to running puppeteer yourself or the Browserless PDF API, without any headless-browser infrastructure.",
      "url": "https://puptra-pdf-snapshot.saastemly.com",
      "mcp": "https://puptra-pdf-snapshot.saastemly.com/mcp",
      "llmsTxt": "https://puptra-pdf-snapshot.saastemly.com/llms.txt",
      "openapi": "https://puptra-pdf-snapshot.saastemly.com/openapi.json",
      "x402": "https://puptra-pdf-snapshot.saastemly.com/.well-known/x402",
      "tags": [
        "pdf",
        "screenshot",
        "puppeteer",
        "headless-browser",
        "rendering"
      ],
      "routes": [
        {
          "route": "POST /v1/pdf",
          "description": "Render a URL or HTML to PDF with Puppeteer's page.pdf() options (format letter by default, scale, margins, header/footer templates, printBackground, pageRanges).",
          "priceUsd": 0.005,
          "freePerIpPerDay": 3
        },
        {
          "route": "POST /v1/screenshot",
          "description": "Capture a PNG, JPEG or WebP screenshot with Puppeteer's page.screenshot() options (fullPage, clip, omitBackground, quality 0-100 for jpeg/webp only).",
          "priceUsd": 0.005,
          "freePerIpPerDay": 3
        },
        {
          "route": "POST /v1/snapshot",
          "description": "One call, several formats: rendered HTML content and a base64 screenshot (plus optional Markdown and accessibility tree), with the page's status and title.",
          "priceUsd": 0.005,
          "freePerIpPerDay": 3
        },
        {
          "route": "POST /v1/markdown",
          "description": "The page's rendered content as Markdown.",
          "priceUsd": 0.005,
          "freePerIpPerDay": 3
        },
        {
          "route": "POST /v1/links",
          "description": "Every link on the page as absolute URLs, with optional same-domain-only and visible-only filters.",
          "priceUsd": 0.005,
          "freePerIpPerDay": 3
        }
      ]
    },
    {
      "id": "sandboxd-code-run",
      "name": "Sandboxd Code Run",
      "description": "Hosted one-shot code execution: send a snippet plus optional files, get stdout, stderr, exit code and artifacts back. Daytona execute-code compatible; no daemon to keep warm, priced per run.",
      "url": "https://sandboxd-code-run.saastemly.com",
      "mcp": "https://sandboxd-code-run.saastemly.com/mcp",
      "llmsTxt": "https://sandboxd-code-run.saastemly.com/llms.txt",
      "openapi": "https://sandboxd-code-run.saastemly.com/openapi.json",
      "x402": "https://sandboxd-code-run.saastemly.com/.well-known/x402",
      "tags": [
        "code",
        "sandbox",
        "python",
        "javascript",
        "api"
      ],
      "routes": [
        {
          "route": "POST /v1/execute-code",
          "description": "Runs Python, JavaScript or TypeScript code in an isolated one-shot sandbox and returns stdout, stderr, exit code and artifacts (Daytona CodeRunRequest/ExecuteResponse compatible)",
          "priceUsd": 0.002,
          "freePerIpPerDay": 3
        },
        {
          "route": "POST /v1/execute-command",
          "description": "Runs a shell command in an isolated one-shot sandbox and returns stdout, stderr and the exit code (Daytona ExecuteRequest/ExecuteResponse compatible)",
          "priceUsd": 0.002,
          "freePerIpPerDay": 3
        }
      ]
    },
    {
      "id": "supervision-draw",
      "name": "Supervision Draw",
      "description": "Draw detections onto an image with Roboflow supervision's own annotators, over HTTP and MCP. Send a base64 image and detections (boxes in xyxy pixels, optional class_id, confidence, label, polygon) and get back the annotated image plus per-class counts. Annotators: box, round_box, box_corner, circle, dot, ellipse, triangle, label, color, mask, polygon, halo, background_overlay, blur, pixelate, percentage_bar, chained in order. A hosted alternative to installing Python and supervision just to render detection results.",
      "url": "https://supervision-draw.saastemly.com",
      "mcp": "https://supervision-draw.saastemly.com/mcp",
      "llmsTxt": "https://supervision-draw.saastemly.com/llms.txt",
      "openapi": "https://supervision-draw.saastemly.com/openapi.json",
      "x402": "https://supervision-draw.saastemly.com/.well-known/x402",
      "tags": [
        "supervision",
        "annotation",
        "object-detection",
        "bounding-box",
        "computer-vision"
      ],
      "routes": [
        {
          "route": "POST /v1/annotate",
          "description": "Annotate an image with detections using supervision's annotators (box, round_box, box_corner, circle, dot, ellipse, triangle, label, color, mask, polygon, halo, background_overlay, blur, pixelate, percentage_bar), applied in order. Input: base64 image up to 4 megapixels, up to 500 detections with xyxy pixel boxes and optional class_id, confidence, ASCII label, polygon. Returns the annotated image (base64 PNG or JPEG), size and counts per class.",
          "priceUsd": 0.003,
          "freePerIpPerDay": 3
        }
      ]
    },
    {
      "id": "visionflow-match",
      "name": "VisionFlow Match",
      "description": "Hosted OpenCV for finding a pattern image inside a larger image: template matching, ORB/SIFT feature matching and RANSAC homography, over HTTP and MCP. Gives automation agents pixel boxes, corners and confidence for UI elements, logos and objects in screenshots. A hosted alternative to running OpenCV (opencv/opencv) yourself.",
      "url": "https://visionflow-match.saastemly.com",
      "mcp": "https://visionflow-match.saastemly.com/mcp",
      "llmsTxt": "https://visionflow-match.saastemly.com/llms.txt",
      "openapi": "https://visionflow-match.saastemly.com/openapi.json",
      "x402": "https://visionflow-match.saastemly.com/.well-known/x402",
      "tags": [
        "opencv",
        "template-matching",
        "screenshot",
        "computer-vision",
        "homography"
      ],
      "routes": [
        {
          "route": "POST /v1/template-match",
          "description": "Find where a small pattern image (a button, icon, logo or crop) appears inside a larger screenshot or picture, using OpenCV cv2.matchTemplate. Returns the best position, plus every non-overlapping position scoring above the threshold, as pixel boxes with scores. Use it for exact-looking pixel patterns at the same scale; for different scale, rotation or perspective use /v1/homography.",
          "priceUsd": 0.003,
          "freePerIpPerDay": 3
        },
        {
          "route": "POST /v1/feature-match",
          "description": "Match local features between a pattern image and a larger image: detects ORB or SIFT keypoints in both, matches them with a brute-force matcher and Lowe's ratio test (OpenCV BFMatcher.knnMatch), and returns the good matches as point pairs sorted by distance. Use it to see which parts of a pattern are present and where, even when the pattern is scaled or rotated; for the pattern's outline use /v1/homography.",
          "priceUsd": 0.004,
          "freePerIpPerDay": 3
        },
        {
          "route": "POST /v1/homography",
          "description": "Locate a pattern image inside a larger image even when it is scaled, rotated or viewed at an angle: ORB or SIFT feature matching plus cv2.findHomography with RANSAC. Returns whether it was found, the 3x3 homography (pattern pixels to image pixels), the four projected corners, the bounding box, and the inlier count as confidence. Use it to find a UI element, logo or object in a screenshot or photo.",
          "priceUsd": 0.004,
          "freePerIpPerDay": 3
        }
      ]
    }
  ]
}
