Skip to content
helpyself

The HelpySelf API

Use the same tools from a script, or from an AI assistant. No account needed to start; your plan's limits apply when you sign in.

Use these tools inside your AI assistant

HelpySelf speaks the Model Context Protocol, so Claude, Cursor and ChatGPT can call these tools directly during a conversation — resize an image, merge a PDF, convert a file, without leaving the chat. Add this one address; every tool appears, and new ones show up on their own.

https://helpyself.com/mcp

No token needed to start — calls run at the anonymous limits. Add your token in the client's header settings to use your own plan's limits instead.

What this is actually for

Once the tools are connected, they are things your assistant can do rather than sites you have to visit. These are ordinary requests — no syntax to learn, and no file leaves the conversation unless you ask for one.

  • Merge these four PDFs and make the result smaller.
  • Resize every image in this folder to 1200px on the long edge.
  • Turn this logo into a favicon set with the HTML to go with it.
  • Take the white background off this product photo.

Why call these rather than write them

Each of these is an afternoon of work the first time and a maintenance job forever after — PDF page trees, colour profiles, EXIF orientation, the eight ways a JPEG can be subtly wrong. They are solved here, they are free to call, and they behave the same whether a person clicks them or a script does. There is no upload step and no storage to manage: a file goes in the request and comes back in the response. Nothing is kept unless you ask us to keep it.

Making a call

Every tool is one POST, and no token is needed to try it. Send the tool's options as JSON; add a bearer token when you want your own plan's limits instead of the anonymous ones.

curl https://helpyself.com/api/v1/tools/case-converter   -H "Content-Type: application/json"   -d '{"text":"hello world","mode":"upper"}'

Files travel base64-encoded in the JSON body. The response is JSON too, with the result base64-encoded where a tool produces a file.

Limits

No tokenPro
Files at a time
20
1,000
Largest file
50 MB
500 MB
Requests
60 per minute
60 per minute

These are your plan's limits, not separate API limits — a call can never do more than you could do in the browser. Each tool also has its own ceiling where its code stops coping, and the smaller of the two applies. Calling without a token gets the anonymous limits.

When something is refused

402
Larger than your plan allows. The response says the limit, what Pro allows, and where to upgrade.
404
That tool has no API. The list below is the complete one.
413
Too many files, or a file larger than your plan allows.
429
Too many requests. Wait a moment.
400
The body did not match what the tool expects. The response says which field.

Every tool, callable

all 29

Each takes the same options as the tool page, because both call the same code. Open one to see an example request.

  • Base64 Encoder & Decoder

    Encode and decode Base64 text instantly.

    /api/v1/tools/base64

    Request

    POST /api/v1/tools/base64
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "text": "hello world",
      "action": "encode",
      "urlSafe": false
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "output": "aGVsbG8gd29ybGQ=",
      "source": "helpyself.com"
    }
    Open Base64 Encoder & Decoder
  • Bulk Image Resizer

    Resize a whole folder of images at once, in your browser.

    /api/v1/tools/bulk-image-resizer

    Request

    POST /api/v1/tools/bulk-image-resizer
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "name": "image.png",
      "type": "image/png",
      "data": "<base64-encoded file bytes>",
      "maxEdge": 100,
      "format": "keep",
      "quality": 0.82
    }
    Open Bulk Image Resizer
  • Case Converter

    Convert text between camelCase, snake_case and more.

    /api/v1/tools/case-converter

    Request

    POST /api/v1/tools/case-converter
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "text": "hello world"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "results": [
        {
          "name": "camel",
          "label": "camelCase",
          "value": "helloWorld"
        },
        {
          "name": "pascal",
          "label": "PascalCase",
          "value": "HelloWorld"
        },
        {
          "name": "snake",
          "label": "snake_case",
          "value": "hello_world"
        },
        {
          "name": "constant",
          "label": "CONSTANT_CASE",
          "value": "HELLO_WORLD"
        },
        {
          "name": "kebab",
          "label": "kebab-case",
          "value": "hello-world"
        },
        {
          "name": "title",
          "label": "Title Case",
          "value": "Hello World"
        },
        {
          "name": "sentence",
          "label": "Sentence case",
          "value": "Hello world"
        },
        {
          "name": "upper",
          "label": "UPPERCASE",
          "value": "HELLO WORLD"
        },
        {
          "name": "lower",
          "label": "lowercase",
          "value": "hello world"
        }
      ],
      "source": "helpyself.com"
    }
    Open Case Converter
  • Colour Converter

    Convert colours between HEX, RGB and HSL.

    /api/v1/tools/color-converter

    Request

    POST /api/v1/tools/color-converter
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "color": "#ffffff"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "formats": {
        "hex": "#ffffff",
        "hexAlpha": "#ffffff",
        "rgb": "rgb(255, 255, 255)",
        "hsl": "hsl(0, 0%, 100%)",
        "channels": {
          "r": 255,
          "g": 255,
          "b": 255,
          "a": 1
        },
        "hslChannels": {
          "h": 0,
          "s": 0,
          "l": 100
        },
        "preferredTextColor": "#000000"
      },
      "source": "helpyself.com"
    }
    Open Colour Converter
  • Compress PDF

    Make a PDF smaller without turning the text into a picture.

    /api/v1/tools/pdf-compress

    Request

    POST /api/v1/tools/pdf-compress
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "name": "document.pdf",
      "data": "<base64-encoded file bytes>",
      "level": "balanced",
      "structureOnly": false
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "name": "document.pdf",
      "inputBytes": 851,
      "outputBytes": 851,
      "alreadyOptimised": true,
      "imagesRecompressed": 0,
      "imagesSkipped": 0,
      "imagesUnsupported": 0,
      "type": "application/pdf",
      "bytes": 851,
      "data": "<1136 base64 characters>",
      "source": "helpyself.com"
    }
    Open Compress PDF
  • Contrast Checker

    Check colour contrast against WCAG accessibility levels.

    /api/v1/tools/contrast-checker

    Request

    POST /api/v1/tools/contrast-checker
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "foreground": "#ffffff",
      "background": "#ffffff",
      "suggest": false,
      "target": 4.5
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "report": {
        "ratio": 1,
        "foreground": "#ffffff",
        "background": "#ffffff",
        "checks": [
          {
            "id": "aa-normal",
            "label": "AA · normal text",
            "required": 4.5,
            "passes": false
          },
          {
            "id": "aa-large",
            "label": "AA · large text",
            "required": 3,
            "passes": false
          },
          {
            "id": "aaa-normal",
            "label": "AAA · normal text",
            "required": 7,
            "passes": false
          },
          {
            "id": "aaa-large",
            "label": "AAA · large text",
            "required": 4.5,
            "passes": false
          },
          {
            "id": "ui",
            "label": "UI components & graphics",
            "required": 3,
            "passes": false
          }
        ],
        "summary": "Fail"
      },
      "source": "helpyself.com"
    }
    Open Contrast Checker
  • Crop Image

    Trim an image to the part you actually want, at any aspect ratio.

    /api/v1/tools/image-cropper

    Request

    POST /api/v1/tools/image-cropper
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "name": "image.png",
      "type": "image/png",
      "data": "<base64-encoded file bytes>",
      "x": 0,
      "y": 0,
      "width": 100,
      "height": 100,
      "format": "auto",
      "quality": 0.9
    }
    Open Crop Image
  • Favicon Generator

    Turn any image into a complete favicon set.

    /api/v1/tools/favicon-generator

    Request

    POST /api/v1/tools/favicon-generator
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "name": "image.png",
      "type": "image/png",
      "data": "<base64-encoded file bytes>"
    }
    Open Favicon Generator
  • Hash Generator

    Generate SHA-1, SHA-256, SHA-384 and SHA-512 hashes.

    /api/v1/tools/hash-generator

    Request

    POST /api/v1/tools/hash-generator
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "text": "hello world",
      "algorithms": [
        "SHA-256"
      ]
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "hashes": [
        {
          "algorithm": "SHA-256",
          "hex": "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
          "base64": "uU0nuZNNPgilLlLX2n2r+sSE7+N6U4DukIj3rOLvzek="
        }
      ],
      "source": "helpyself.com"
    }
    Open Hash Generator
  • Image Compressor

    Shrink JPEG, PNG and WebP images in your browser — one or a whole folder.

    /api/v1/tools/image-compressor

    Request

    POST /api/v1/tools/image-compressor
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "name": "image.png",
      "type": "image/png",
      "data": "<base64-encoded file bytes>",
      "quality": 0.8,
      "format": "auto"
    }
    Open Image Compressor
  • Image Converter

    Convert images between WebP, JPEG and PNG — one or a whole folder.

    /api/v1/tools/image-converter

    Request

    POST /api/v1/tools/image-converter
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "name": "image.png",
      "type": "image/png",
      "data": "<base64-encoded file bytes>",
      "target": "image/jpeg",
      "quality": 0.9
    }
    Open Image Converter
  • Image Resizer

    Resize an image to any size, and see the result before you download.

    /api/v1/tools/image-resizer

    Request

    POST /api/v1/tools/image-resizer
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "name": "image.png",
      "type": "image/png",
      "data": "<base64-encoded file bytes>",
      "mode": "dimensions",
      "keepAspect": true,
      "quality": 0.85,
      "allowUpscale": false
    }
    Open Image Resizer
  • Images to PDF

    Turn photos and scans into a single PDF.

    /api/v1/tools/images-to-pdf

    Request

    POST /api/v1/tools/images-to-pdf
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "images": [
        {
          "name": "image.jpg",
          "type": "image/png",
          "data": "<base64-encoded file bytes>"
        }
      ],
      "pageSize": "fit",
      "orientation": "auto",
      "margin": 0
    }
    Open Images to PDF
  • JSON Formatter

    Format, validate and beautify JSON instantly.

    /api/v1/tools/json-formatter

    Request

    POST /api/v1/tools/json-formatter
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "json": "{\"hello\":\"world\"}",
      "action": "format",
      "indent": 2,
      "sortKeys": false
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "output": "{\n  \"hello\": \"world\"\n}",
      "source": "helpyself.com"
    }
    Open JSON Formatter
  • JWT Decoder

    Decode and inspect JSON Web Tokens safely.

    /api/v1/tools/jwt-decoder

    Request

    POST /api/v1/tools/jwt-decoder
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.signature"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "decoded": {
        "header": {
          "alg": "HS256"
        },
        "payload": {
          "sub": "123"
        },
        "signature": "signature",
        "algorithm": "HS256",
        "expired": null,
        "claims": [
          {
            "key": "sub — Subject",
            "value": "123"
          }
        ]
      },
      "verified": false,
      "source": "helpyself.com"
    }
    Open JWT Decoder
  • Lorem Ipsum Generator

    Generate placeholder text for mockups and layouts.

    /api/v1/tools/lorem-ipsum

    Request

    POST /api/v1/tools/lorem-ipsum
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "count": 3,
      "unit": "paragraphs",
      "startWithLorem": true
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cillum laudantium nemo tempor enim magna do beatae. Exercitation sed vitae et nisi eiusmod. Aliqua laudantium mollit laborum proident velit enim laborum dolor sunt, pariatur fugiat ex. Quis enim eu ab, adipiscing dicta ex vitae et commodo nostrud et.\n\nNon ad deserunt nostrud error veniam laudantium et amet, eaque natus exercitation error architecto adipiscing. Velit nisi minim error ipsa beatae magna. Unde laboris in veniam, vitae irure ab nulla voluptatem doloremque. Id laboris nulla adipiscing officia ea unde nostrud sint. Omnis irure ad totam, veritatis dicta incididunt dicta ex explicabo occaecat labore.\n\nAute sunt aliqua enim nostrud sint consectetur, totam nostrud nemo. Eu reprehenderit error est, quasi voluptate voluptate labore laborum et. Labore consequat et et, omnis non beatae eu doloremque qui. Exercitation veniam voluptatem incididunt dolor mollit excepteur aliqua. Et irure laudantium eiusmod adipiscing eaque pariatur in.",
      "source": "helpyself.com"
    }
    Open Lorem Ipsum Generator
  • Merge PDF

    Combine several PDF files into one.

    /api/v1/tools/pdf-merge

    Request

    POST /api/v1/tools/pdf-merge
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "files": [
        {
          "name": "document.pdf",
          "data": "<base64-encoded file bytes>"
        },
        {
          "name": "document.pdf",
          "data": "<base64-encoded file bytes>"
        }
      ]
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "pageCount": 2,
      "sources": [
        {
          "name": "document.pdf",
          "pageCount": 1
        },
        {
          "name": "document.pdf",
          "pageCount": 1
        }
      ],
      "data": "<1364 base64 characters>",
      "source": "helpyself.com"
    }
    Open Merge PDF
  • Password Generator

    Create strong random passwords in your browser.

    /api/v1/tools/password-generator

    Request

    POST /api/v1/tools/password-generator
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "length": 20,
      "lowercase": true,
      "uppercase": true,
      "digits": true,
      "symbols": true,
      "excludeAmbiguous": false,
      "count": 1
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "passwords": [
        "#q^MT7Fzj-Dh4V?O3hQm"
      ],
      "alphabetSize": 76,
      "entropyBits": 125,
      "source": "helpyself.com"
    }
    Open Password Generator
  • QR Code Generator

    Turn any link or text into a QR code.

    /api/v1/tools/qr-generator

    Request

    POST /api/v1/tools/qr-generator
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "text": "hello world",
      "size": 512,
      "margin": 4,
      "errorCorrection": "M",
      "dark": "#000000",
      "light": "#ffffff"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"512\" height=\"512\" viewBox=\"0 0 29 29\" shape-rendering=\"crispEdges\"><path fill=\"#ffffff\" d=\"M0 0h29v29H0z\"/><path stroke=\"#000000\" d=\"M4 4.5h7m2 0h1m1 0h2m1 0h7M4 5.5h1m5 0h1m3 0h1m3 0h1m5 0h1M4 6.5h1m1 0h3m1 0h1m1 0h4m2 0h1m1 0h3m1 0h1M4 7.5h1m1 0h3m1 0h1m1 0h3m1 0h1m1 0h1m1 0h3m1 0h1M4 8.5h1m1 0h3m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h3m1 0h1M4 9.5h1m5 0h1m1 0h1m2 0h1m2 0h1m5 0h1M4 10.5h7m1 0h1m1 0h1m1 0h1m1 0h7M12 11.5h1m1 0h1M4 12.5h1m1 0h5m2 0h1m1 0h1m2 0h5M5 13.5h2m1 0h2m1 0h1m1 0h1m1 0h8m1 0h1M4 14.5h1m1 0h1m1 0h4m1 0h2m1 0h3m2 0h3M4 15.5h1m1 0h1m2 0h1m3 0h1m1 0h3m2 0h3M7 16.5h1m1 0h5m2 0h3m5 0h1M12 17.5h1m1 0h1m1 0h1m3 0h2m2 0h1M4 18.5h7m4 0h1m2 0h1m3 0h2M4 19.5h1m5 0h1m1 0h1m4 0h1m1 0h1m1 0h4M4 20.5h1m1 0h3m1 0h1m1 0h1m2 0h1m2 0h2m4 0h1M4 21.5h1m1 0h3m1 0h1m1 0h2m2 0h6M4 22.5h1m1 0h3m1 0h1m1 0h2m2 0h1m2 0h1m2 0h1M4 23.5h1m5 0h1m2 0h2m1 0h2m2 0h3M4 24.5h7m1 0h2m1 0h2m1 0h1m1 0h1m2 0h1\"/></svg>\n",
      "source": "helpyself.com"
    }
    Open QR Code Generator
  • Regex Tester

    Test regular expressions against your text safely.

    /api/v1/tools/regex-tester

    Request

    POST /api/v1/tools/regex-tester
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "pattern": "\\d+",
      "flags": "g",
      "text": "hello world"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "count": 0,
      "truncated": false,
      "limit": 1000,
      "matches": [],
      "source": "helpyself.com"
    }
    Open Regex Tester
  • Remove Background

    Make a solid background transparent, instantly and in your browser.

    /api/v1/tools/background-remover

    Request

    POST /api/v1/tools/background-remover
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "name": "image.png",
      "type": "image/png",
      "data": "<base64-encoded file bytes>",
      "tolerance": 20,
      "reach": "edges",
      "feather": 30
    }
    Open Remove Background
  • Rotate PDF

    Turn sideways or upside-down PDF pages the right way up.

    /api/v1/tools/pdf-rotate

    Request

    POST /api/v1/tools/pdf-rotate
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "data": "<base64-encoded file bytes>",
      "name": "document",
      "angle": 90,
      "only": "all"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "name": "document-rotated.pdf",
      "pageCount": 1,
      "rotated": [
        1
      ],
      "data": "<1160 base64 characters>",
      "source": "helpyself.com"
    }
    Open Rotate PDF
  • Slug Generator

    Turn any title into a clean URL slug.

    /api/v1/tools/slug-generator

    Request

    POST /api/v1/tools/slug-generator
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "text": "hello world",
      "separator": "-",
      "lowercase": true,
      "maxLength": 0,
      "expandDiacritics": true
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "slug": "hello-world",
      "source": "helpyself.com"
    }
    Open Slug Generator
  • Split PDF

    Extract pages from a PDF or split it into separate files.

    /api/v1/tools/pdf-split

    Request

    POST /api/v1/tools/pdf-split
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "data": "<base64-encoded file bytes>",
      "name": "document",
      "mode": "extract"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "sourcePageCount": 1,
      "files": [
        {
          "name": "document-extracted.pdf",
          "pageCount": 1,
          "data": "<1148 base64 characters>"
        }
      ],
      "source": "helpyself.com"
    }
    Open Split PDF
  • Text Diff

    Compare two texts and see exactly what changed.

    /api/v1/tools/text-diff

    Request

    POST /api/v1/tools/text-diff
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "original": "hello world",
      "changed": "hello world",
      "ignoreCase": false,
      "ignoreWhitespace": false
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "lines": [
        {
          "op": "equal",
          "text": "hello world",
          "left": 1,
          "right": 1
        }
      ],
      "stats": {
        "added": 0,
        "removed": 0,
        "unchanged": 1
      },
      "identical": true,
      "source": "helpyself.com"
    }
    Open Text Diff
  • Timestamp Converter

    Convert Unix timestamps to dates and back.

    /api/v1/tools/timestamp-converter

    Request

    POST /api/v1/tools/timestamp-converter
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "value": "1735689600"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "converted": {
        "unixSeconds": 1735689600,
        "unixMilliseconds": 1735689600000,
        "iso": "2025-01-01T00:00:00.000Z",
        "utc": "Wednesday, 1 January 2025 at 00:00:00 UTC",
        "local": "Wednesday, 1 January 2025 at 01:00:00 CET",
        "relative": "2 years ago",
        "dayOfWeek": "Wednesday",
        "detectedUnit": "seconds"
      },
      "source": "helpyself.com"
    }
    Open Timestamp Converter
  • URL Encoder & Decoder

    Percent-encode and decode URLs and query strings.

    /api/v1/tools/url-encoder

    Request

    POST /api/v1/tools/url-encoder
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "text": "hello world",
      "action": "encode",
      "mode": "component"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "output": "hello%20world",
      "source": "helpyself.com"
    }
    Open URL Encoder & Decoder
  • UUID Generator

    Generate random UUID v4 identifiers instantly.

    /api/v1/tools/uuid-generator

    Request

    POST /api/v1/tools/uuid-generator
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "count": 1,
      "uppercase": false
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "uuids": [
        "a4960c32-80b0-42ab-bb9b-df89ddc39442"
      ],
      "source": "helpyself.com"
    }
    Open UUID Generator
  • Word Counter

    Count words, characters and reading time as you type.

    /api/v1/tools/word-counter

    Request

    POST /api/v1/tools/word-counter
    Authorization: Bearer hs_your_token_here
    Content-Type: application/json
    
    {
      "text": "hello world"
    }

    Response — produced by actually running the request above

    {
      "ok": true,
      "stats": {
        "characters": 11,
        "charactersNoSpaces": 10,
        "words": 2,
        "sentences": 1,
        "paragraphs": 1,
        "lines": 1,
        "readingMinutes": 0.008888888888888889,
        "speakingMinutes": 0.013333333333333334,
        "topWords": [
          {
            "word": "hello",
            "count": 1
          },
          {
            "word": "world",
            "count": 1
          }
        ]
      },
      "source": "helpyself.com"
    }
    Open Word Counter

Every tool has an API — that is a rule the build enforces, not a target. It is what lets tools be chained together later.

API tokens

The API is open to everyone — a call with no token gets the same limits as browsing without an account. A token raises a script to your own plan's limits, and can be revoked without changing your password.

Create and manage tokens

↑↓ to move · Enter to open · Esc to close