One balance. 127 pay-per-call tools. No subscription.
One API key, one prepaid balance, every tool one POST away. Agents pay per call with a signed x402 payment and never create an account; developers sign in, top up, and mint a key. No minimum, no commitment, one transparent ledger.
Batons /v1/baton 1 tool
Pay-per-call storage, handoff, and cryptographic proof — the flagship.
| baton | Create, append, read, and prove batons — Drop, Pass, Scratchpad, Checkpoint, Ledger presets. Metered by bytes, time, egress, and writes; price frozen at purchase. | metered · live quote |
LLM tasks /v1/llm 11 tools
Eleven structured language tasks — actual provider cost + 6%, itemized on every receipt.
Cost-plus: you pay the actual provider cost + 6%, itemized on every receipt. Pick a tier (budget / value / best); you authorize the published ceiling and pay the metered amount.
| llm/answer | Answer from provided context. | cost + 6% |
| llm/classify | Assign one label from a set. | cost + 6% |
| llm/extract | Pull requested fields out as JSON. | cost + 6% |
| llm/json_repair | Fix malformed JSON. | cost + 6% |
| llm/keywords | Pull key terms as a list. | cost + 6% |
| llm/proofread | Fix spelling, grammar, punctuation. | cost + 6% |
| llm/rewrite | Rewrite in a given style. | cost + 6% |
| llm/sentiment | Positive / negative / neutral. | cost + 6% |
| llm/summarize | Condense text to its key points. | cost + 6% |
| llm/title | Write a single concise title. | cost + 6% |
| llm/translate | Translate text to a target language. | cost + 6% |
Documents & identity /v1/{esigndoc,idverify,doc} 3 tools
E-signature, identity verification, and pandoc document conversion.
| esigndoc | Send a PDF for legally binding e-signature — hosted signing links, live status, signed-PDF retrieval | $0.1000 / envelope |
| idverify | Run an identity / KYC verification and read its status | $0.5000 / verification |
| doc/convert | Convert a markup/structured document between formats via pandoc markdown · html · docx · odt · rtf · epub · latex · rst · org · textile · mediawiki · plain | $0.0003 / MB |
PDF /v1/pdf 22 tools
Merge, split, extract, render, OCR, and convert PDFs.
| merge | Combine PDFs into one | $0.0010 / page |
| split | Split by ranges or burst to single pages | $0.0010 / page |
| rotate | Rotate pages | $0.0010 / page |
| pages | Delete, reorder, or insert pages | $0.0010 / page |
| watermark | Stamp text on pages | $0.0010 / page |
| form | Fill or flatten PDF forms | $0.0010 / page |
| extract-text | Pull text + structure out of a PDF | $0.0020 / page |
| metadata | Read or set document metadata | $0.0010 flat |
| encrypt | Password-protect a PDF (256-bit AES) | $0.0010 / page |
| decrypt | Remove a PDF password | $0.0010 / page |
| compress | Recompress to shrink a PDF | $0.0010 / page |
| repair | Repair a damaged PDF (diagnose + rewrite) | $0.0010 / page |
| render | Rasterize pages to PNG/JPEG ≤ 40 pages, ≤ 300 DPI | $0.0010 / page |
| ocr | Extract text from a scanned PDF (Tesseract) ≤ 5 pages (synchronous) | $0.0030 / page |
| ocr-searchable | Make a scanned PDF searchable (invisible OCR text layer) ≤ 5 pages (synchronous) | $0.0040 / page |
| from-html | Render HTML → PDF (headless Chromium, sandboxed) static HTML, inline assets; no network/JS | $0.0030 flat |
| from-office | Convert an Office file → PDF (LibreOffice) docx/xlsx/pptx/odt/ods/odp/rtf/txt/csv, ≤ 30 MB | $0.0050 flat |
| images | Extract embedded images → PNGs ≤ 200 images | $0.0010 / page |
| diff | Text-compare two PDFs (unified diff) | $0.0010 / page |
| bookmarks | Read the outline / bookmark tree | $0.0010 flat |
| attachments | List / extract embedded file attachments | $0.0010 flat |
| verify-signatures | Verify digital signatures (structural + digest; no CA store) | $0.0010 flat |
Data & CSV /v1/{csv,data} 24 tools
Reshape, query, and validate tabular data — incl. sandboxed SQL.
| convert | Convert between csv / tsv / json / ndjson | $0.0002 / MB |
| dedupe | Drop duplicate rows (order-preserving) | $0.0002 / MB |
| select | Keep, drop, or reorder columns | $0.0002 / MB |
| filter | Keep rows matching a structured predicate (no formula eval) | $0.0002 / MB |
| sort | Sort rows by one or more columns | $0.0002 / MB |
| groupby | Group rows and aggregate (count/sum/avg/min/max) | $0.0002 / MB |
| join | Join two tables (inner/left/right/outer) | $0.0002 / MB |
| union | Concatenate tables (ordered key-union schema) | $0.0002 / MB |
| profile | Column stats: type, nulls, cardinality, min/max/mean | $0.0002 / MB |
| cast | Coerce column types (string/integer/number/boolean/date) | $0.0002 / MB |
| pivot | Reshape long↔wide (pivot / unpivot) | $0.0002 / MB |
| schema-infer | Infer a JSON Schema or SQL DDL from the data | $0.0002 / MB |
| validate | Check rows against a structured schema | $0.0002 / MB |
| diff | Row-level changeset between two tables | $0.0002 / MB |
| from-xlsx | Parse an Excel file → table (csv/json) | $0.0002 / MB |
| to-xlsx | Write a table → Excel (.xlsx), formula-injection-safe (multi-sheet + styling) | $0.0002 / MB |
| derive | Add computed columns (structured, no formula eval) | $0.0002 / MB |
| fillna | Fill empty cells (value / ffill / bfill / mean / median / mode) | $0.0002 / MB |
| dropna | Drop rows with empty cells | $0.0002 / MB |
| rename | Rename columns | $0.0002 / MB |
| slice | Row slicing / sampling (offset/limit/head/tail/sample) | $0.0002 / MB |
| explode | Unnest an array/list cell into multiple rows | $0.0002 / MB |
| sample | Sample rows (n or fraction; random/head/systematic; reproducible seed) | $0.0002 / MB |
| sql | Query your file with full SQL (sandboxed DuckDB, read-only; parquet in & out) no files/network/extensions; ≤ 25 s; ≤ 128 MiB out | $0.0005 / MB |
Image & media /v1/{image,media} 31 tools
Resize, convert, and inspect images; transcode and probe audio/video.
| resize | Resize / fit an image (animated GIF/WebP preserved with animated:true) | $0.0003 / MP |
| convert | Convert image format (png/jpeg/webp/avif/…; animated frames preserved with animated:true) | $0.0003 / MP |
| compress | Re-encode at lower quality | $0.0003 / MP |
| rotate | Rotate / flip an image | $0.0003 / MP |
| metadata | Read dimensions / format / EXIF presence | $0.0005 flat |
| crop | Crop a region | $0.0003 / MP |
| blur | Gaussian blur | $0.0003 / MP |
| sharpen | Sharpen | $0.0003 / MP |
| grayscale | Convert to grayscale | $0.0003 / MP |
| exif-strip | Strip EXIF/metadata (auto-orient first) | $0.0003 / MP |
| dominant-color | Get the dominant color | $0.0002 flat |
| composite | Overlay / watermark one image onto another | $0.0003 / MP |
| contact-sheet | Tile images into a thumbnail-grid PNG | $0.0003 / MP |
| ocr | Extract text from an image (Tesseract, 10 languages) | $0.0030 flat |
| from-html | Render HTML → image (headless Chromium screenshot, sandboxed) | $0.0030 flat |
| adjust | Adjust brightness / saturation / hue / lightness / negate / tint | $0.0003 / MP |
| trim | Auto-crop uniform borders | $0.0003 / MP |
| extend | Pad / extend on any side | $0.0003 / MP |
| probe | Inspect media metadata via ffprobe — duration, container, streams, codecs, dimensions, bitrate read-only | $0.0002 flat |
| subtitle-extract | Pull an embedded subtitle track → SRT/WebVTT text sidecar | $0.0003 flat |
| thumbnail | Grab a single video frame at a timestamp → PNG/JPEG | $0.0003 flat |
| trim | Cut a time range from audio/video by fast stream-copy (codecs preserved) ≤ 300 s input | $0.0005 / MB |
| audio-extract | Strip + (re)encode the audio track (mp3/m4a/aac/wav/ogg/flac) ≤ 300 s input | $0.0005 / MB |
| audio-convert | Standalone audio→audio re-encode (format / bitrate / sample-rate) ≤ 300 s input | $0.0005 / MB |
| loudnorm | Normalize audio loudness to EBU R128 (LUFS / true-peak / range) ≤ 300 s input | $0.0005 / MB |
| speed | Change playback speed (pitch-preserving by default) ≤ 300 s input | $0.0005 / MB |
| convert | Re-encode to another container/codec (H.264/AAC video, or audio formats); scale / crop / rotate ≤ 60 s, downscaled to 720p | $0.0005 / MB |
| concat | Join 2–10 clips end-to-end (concat demuxer, stream-copy) shared codec/container | $0.0005 / MB |
| overlay | Watermark an image onto a video ≤ 300 s video | $0.0005 / MB |
| subtitle-burn | Burn (rasterize) subtitles into the video via libass hard subs; ≤ 300 s video | $0.0005 / MB |
| gif | Turn a video segment into a palette-optimized animated GIF ≤ 15 s, ≤ 640 px wide | $0.0005 / MB |
Generate & codes /v1/{generate,qr,barcode,codes} 12 tools
Render images, charts, invoices, QR/barcodes, and color conversions.
| og-image | Render a social-card PNG (satori → sharp) one OG template | $0.0005 flat |
| mock-data | Generate fake rows from a field→type schema (json/csv/ndjson) rows ≤ 1000, fields ≤ 50 | $0.0002 flat |
| invoice | Render an invoice PDF from structured data (pdf-lib) ≤ 100 line items | $0.0002 flat |
| chart | Render a bar / line / pie chart PNG (SVG → sharp) ≤ 50 data points | $0.0002 flat |
| qr-logo | QR code with a logo composited in the center (ECC H) | $0.0002 flat |
| favicon | Favicon set (PNGs) from an image or initials text ≤ 8 sizes | $0.0002 flat |
| placeholder | Placeholder image (dimensions/label text; png or svg) | $0.0002 flat |
| identicon | Deterministic GitHub-style identicon PNG from a seed | $0.0002 flat |
| qr | Generate a QR code (PNG/SVG) data ≤ 4096 chars | $0.0002 flat |
| barcode | Generate a 1D barcode (Code128/EAN/UPC/…) data ≤ 4096 chars | $0.0002 flat |
| qr-decode | Read a QR code from an uploaded image | $0.0002 flat |
| color-convert | Convert a color between hex / rgb / hsl | $0.0002 flat |
Text & utils /v1/{text,utils,archive} 20 tools
Recase, diff, template, sanitize text; hash, hmac, JWT; zip/gzip archives.
| case | Recase text (upper/lower/title/camel/snake/kebab) | $0.0002 / MB |
| slugify | URL-slugify text (strip diacritics, hyphenate) | $0.0002 / MB |
| diff | Unified diff of two strings | $0.0002 / MB |
| apply-patch | Apply a unified diff to a source string (422 on context mismatch) | $0.0002 / MB |
| merge3 | Three-way merge of two changes against a common base (conflict markers on overlap) | $0.0002 / MB |
| count | Count characters / words / lines + reading time | $0.0002 / MB |
| regex-extract | Extract regex matches (ReDoS-guarded; patterns + input bounded) | $0.0002 / MB |
| template | Render a logic-less mustache-subset template (no eval) | $0.0002 / MB |
| markdown-to-html | Markdown → HTML, always whitelist-sanitized | $0.0002 / MB |
| html-to-text | Convert HTML → plain text | $0.0002 / MB |
| sanitize-html | Sanitize HTML against a safe whitelist | $0.0002 / MB |
| hash | Hash bytes (sha256/sha512/sha1/md5) | $0.0002 / MB |
| hmac | Keyed HMAC (sha256/sha512/sha1/md5); key never logged | $0.0002 / MB |
| base64 | Base64 encode / decode a string | $0.0002 / MB |
| uuid | Generate v4 UUIDs count ≤ 1000 | $0.0001 flat |
| jwt-decode | Decode a JWT header + payload (no verify) | $0.0001 flat |
| jwt-verify | Verify a JWT signature, alg-pinned; key never logged | $0.0001 flat |
| zip | Zip 1+ files into one archive | $0.0002 / MB |
| unzip | Extract a zip to a manifest of entries ≤ 128 MiB uncompressed, ≤ 10000 entries, ratio ≤ 1000:1; encrypted rejected | $0.0002 / MB |
| gzip | Gzip compress / decompress a file (transparent gzip handling for CSV inputs) | $0.0002 / MB |
Courier /v1/bridge 3 tools
Two-way text bridge between agents and their humans — Telegram, email, SMS.
| telegram | Default-on. Short questions, decisions, status pings. | $0.0050 / message |
| Long-form. Confirm-link opt-in. Also carries agent-to-agent routing. | $0.0100 / message | |
| sms | US opt-in via STOP/START. Paid only — no daily free tier. | $0.0500 / message |
The docs are the product
Machine surfaces
Payment & concepts
Deep-dive product sites: cputools.relaystation.ai · courier.relaystation.ai