# cputools > Stateless CPU utilities for agents and devs — one call, fractions of a cent, no server to babysit. cputools — stateless CPU utilities for agents and devs, by Relaystation. One endpoint, pay-per-call, no server to babysit. The suite is 86 operations across nine categories, plus a pipeline runtime that composes them. PDF (19, POST /v1/pdf/): merge, split, rotate, pages (delete/reorder/insert), watermark, form fill/flatten, extract-text, metadata read/set, encrypt, decrypt, compress, render (rasterize to PNG/JPEG), ocr (Tesseract), from-html (HTML→PDF on a sandboxed headless Chromium — no network/JS, inline assets), from-office (Office→PDF via LibreOffice: docx/xlsx/pptx/odt/ods/odp/rtf/txt/csv in, PDF out; ≤ 30 MB; unsupported format or oversize rejected free pre-charge; an undeliverable convert reverses the charge), images (extract embedded images → PNG), diff (text compare two PDFs), bookmarks (read outline), attachments (list/extract embedded files). CSV (3, POST /v1/csv/): convert (csv/tsv/json/ndjson), dedupe, select. Image (13, POST /v1/image/): resize, convert, compress, rotate, metadata, crop, blur, sharpen, grayscale, exif-strip, dominant-color, composite, contact-sheet. Codes (4): POST /v1/qr, POST /v1/barcode, POST /v1/codes/qr-decode (read a QR from an image), POST /v1/codes/color-convert (hex/rgb/hsl). Utils (6, POST /v1/utils/): hash, hmac, base64, uuid, jwt-decode, jwt-verify. Generate (8, POST /v1/generate/): og-image (social-card PNG via satori), mock-data (fake rows via faker; json/csv/ndjson), invoice (invoice PDF via pdf-lib), chart (bar/line/pie PNG), qr-logo (QR with centered logo), favicon (icon set from image or initials), placeholder (placeholder image), identicon (deterministic avatar from a seed). Archive (3, POST /v1/archive/): zip, unzip, gzip. Data (21, POST /v1/data/): filter, sort, groupby, join, union, profile, cast, pivot, schema-infer, validate, diff, derive, fillna, dropna, rename, slice, explode, sample (n|fraction, reproducible seed), from-xlsx, to-xlsx (Excel in/out, formula-injection-safe write), and sql — full SQL over your uploaded file on a sandboxed read-only DuckDB engine (no filesystem, network, or extension access; your file is the table `input`). Text (9, POST /v1/text/): case, slugify, diff, count, regex-extract (ReDoS-guarded), template (no-eval), markdown-to-html, html-to-text, sanitize-html (whitelist). Pipeline (POST /v1/pipeline): compose a chain of the in-process transforms (csv, data incl. Excel bridges, image) in one call, threaded step-to-step, billed as the sum of the steps, atomic (a failed step refunds the whole run). Pricing (launch defaults; the live 402 challenge is authoritative): PDF per page — $0.001/page for most ops, $0.002 for extract-text, $0.003 for ocr, $0.001 flat for metadata, $0.003 flat for from-html (HTML→PDF, Chromium worker), $0.005 flat for from-office (Office→PDF, LibreOffice); min one page. CSV per MB of input — $0.0002/MB, min 1 MiB. Image per megapixel — $0.0003/MP, min 1; metadata $0.0005 flat. QR/barcode — $0.0002 flat. Utils — hash/hmac/base64 $0.0002/MB (min 1 MiB); uuid/jwt-decode/jwt-verify $0.0001 flat. Generate — og-image $0.0005 flat, mock-data $0.0002 flat. Archive — $0.0002/MB of input (min 1 MiB). Data — the dataframe / Excel / cleaning ops (filter, sort, groupby, join, union, profile, cast, pivot, schema-infer, validate, diff, derive, fillna, dropna, rename, slice, explode, sample, from-xlsx, to-xlsx) $0.0002/MB (min 1 MiB), sql $0.0005/MB (runs on the DuckDB worker). Text — all nine ops $0.0002/MB (min 1 MiB). Image-extras (crop/blur/sharpen/grayscale/exif-strip/composite/contact-sheet) $0.0003/MP, dominant-color $0.0005 flat. PDF-extras — images/diff $0.001/page, bookmarks/attachments $0.001 flat. Codes — qr-decode/color-convert $0.0002 flat. Generate-extras (invoice/chart/qr-logo/favicon/placeholder/identicon) $0.0002 flat. Pipeline — the sum of its steps' per-op rates plus a $0 orchestration fee. Caps: OCR is synchronous, max 5 pages; render max 40 pages / 300 DPI; QR/barcode data max 4096 chars; uuid count max 1000; mock-data max 1000 rows / 50 fields; archive/unzip is zip-bomb-guarded (max 128 MiB uncompressed, max 10000 entries, ratio max 1000:1, encrypted zips rejected, one-level extraction), jwt-verify is algorithm-pinned (no alg:none) and never logs the key; data/sql runs read-only with no filesystem/network/extension access and is memory/timeout/output-capped (≤ 128 MiB out); data join/union/groupby outputs are byte-capped (the cartesian-blowup guard); pipeline is capped at 10 steps and 128 MiB threaded between steps; inputs up to 4 MB inline or 50 MB by storage reference. The lodestone: your agent POSTs a file and an x402 payment authorization, gets the result back, and never created an account. Send a file inline (base64, ≤ 4 MB) or by storage reference (≤ 50 MB, via POST /v1/cputools/upload-url) for larger files; get the result back the same way (inline base64, or a presigned outputUrl above 4 MB). A small per-MB egress surcharge applies only to storage-ref outputs. The heavy PDF ops (encrypt/decrypt/compress/render/ocr + from-html + from-office) run vendored qpdf, poppler, Tesseract, headless Chromium, and LibreOffice (Gotenberg) on dedicated engines — same request shape, same per-call billing; a worst-case worker job near the 30-second window may 504, and the same-Idempotency-Key retry returns the cached result without double-charge. Pay per call with x402, or top up with a card via Stripe — one Relaystation balance funds cputools and every other Relaystation product. No subscription, no minimum, no commitment. The in-process utils/generate/archive ops run Node's built-in crypto plus jose, satori, faker, and fflate. Powered by open-source pdf-lib, pdf.js, qpdf, poppler, Tesseract, Papaparse, sharp, jose, satori, faker, fflate, DuckDB, exceljs, headless Chromium, and LibreOffice — the same tools you could run yourself; we just run them so you don't have to. Agent-native discovery: x402 per-call payment, OpenAPI 3.1, llms.txt, and MCP. The full 88-tool cputools catalog (the 86 ops plus pipeline_run and cputools_upload_url) is callable over MCP at https://api.relaystation.ai/mcp — one endpoint that also carries Relaystation's e-sign (esigndoc_*), ID-verification (idverify_*), Courier, and chassis tools (129 tools in total), all funded from one balance with one API key. Drop the URL into Claude Code/Desktop, Cursor, Codex, Cline, Continue, or Cowork with a Bearer rs_live_* key (or ?key= on the URL). Wallet-as-identity OR OAuth signup. Three on-ramps: x402 lodestone (per-call, no signup required), Stripe (dashboard checkout), crypto wallet. Setup: POST to https://api.relaystation.ai/v1// with an X-Payment header (or a Bearer rs_live_* API key) and an Idempotency-Key. ## Discovery - [Full reference](https://cputools.relaystation.ai/llms-full.txt) - [Web-rendered API reference](https://cputools.relaystation.ai/api-reference) - [MCP advertisement](https://cputools.relaystation.ai/.well-known/mcp.json) - [MCP endpoint](https://api.relaystation.ai/mcp) - [Relaystation chassis docs](https://relaystation.ai/docs)