Developer Utilities
The Utils page is a workshop of developer and QA tools. Most tools run
directly in your browser. The tools that contact the server are listed below;
browser-only tools keep working when the server is unreachable.
Finding a tool
The book button beside the search field opens this guide in a new tab. It follows
your preference to show documentation links in User Settings.
The page opens with a card catalog:
- Search filters all tools by name, description or keyword, in English and
Russian. Clear the query with Escape or the clear button; search and history
controls always use the currently available catalogue, including plugin tools. - Category chips (Formatters, Encoders, Converters, Diff, Generators,
Testers, Web, Network, Text, Math, Test Design, QA Planning) narrow the grid. - Favorites — click the bookmark on a card to pin a tool to the top row.
Favorites are stored in your browser (in this browser profile). - Recently used — the tools you opened last, so a repeat visit is one click.
- A direct link to any tool exists:
/ui/utils?tool=<id>opens the page with
that tool expanded (for example/ui/utils?tool=cron-guru).
What is inside
| Category | Tools |
|---|---|
| Formatters | JSON (format / validate / minify), XML, Markdown → HTML |
| Encoders | Base64, URL, HTML entities, JWT decoder, Text ⇄ bytes (bin/hex/oct/dec) |
| Converters | JSON ⇄ XML, Timestamp (Unix/ISO/RFC 2822), keyboard-layout fixer (RU⇄EN), case converter, JSON ⇄ YAML, JSON ⇄ CSV, Roman numerals |
| Diff | JSON diff, text diff |
| Generators | UUID v4 / v7 / ULID, hashes (MD5, SHA family, CRC), Lorem ipsum, passwords, random tokens, HMAC signatures, TOTP/HOTP one-time codes, SVG placeholders, RSA key pairs |
| Testers | Regex tester, JsonPath tester (evaluated by the server, exactly as mocks evaluate it), color converter, password strength |
| Web | URL parser, HTTP status codes, MIME types, Basic Auth header, User-Agent parser, Open Graph / Twitter meta tags |
| Network | IPv4 subnet calculator, IPv4 range expander, IPv6 ULA generator (RFC 4193), MAC address generator |
| Text | Text statistics, slugify (with Cyrillic transliteration), NATO phonetic alphabet, numeronyms, email normalizer, list converter |
| Math | Engineering calculator, percentage calculator, numeral system converter |
| Test Design | Pairwise, equivalence partitioning & boundary values, decision tables, state transition paths |
| QA Planning | PERT estimation, risk matrix, SLA calculator, load-test calculator, cron expression parser with upcoming runs |
The IPv6 ULA generator returns a network prefix ending in ::/48 and a host address ending in ::1 inside that network. The server utility ipv6-ula returns the same pair as prefix and host. Each run generates a new private network prefix.
Two tools talk to the server on purpose: the JsonPath tester (its answer
must be exactly what mock conditions produce) and everything under
Administration. Everything else is computed locally.
Engineering calculator
Open Math → Engineering Calculator, or /ui/utils?tool=math-eval.
Type a formula; the result updates as you type. Function buttons insert at the
cursor or wrap the selected operand. Examples fill the formula; Copy copies
only a valid result and Clear resets the formula.
Use + - * / % ^, parentheses, pi and e, and functions such as
sqrt, abs, round, floor, ceil, min, max, pow, log, ln,
exp, sin, cos and tan. log is base 10; ln is the natural logarithm.
Trigonometric functions use radians: sin(30*pi/180) converts 30 degrees and
returns approximately 0.5. Use a dot for decimals. Browser formulas are
limited to 4096 characters and 128 nesting levels. Invalid formulas clear
the previous result. Calculations run locally; no formula is sent to the server.
Extending with plugins
Plugins can add utilities without touching the product: a declarative
utilities contribution (a JSON template + an input schema, no code) becomes
a catalog card and an agent tool with a <plugin-id>:<key> id. They appear
beside the built-ins for every namespace where the plugin is enabled — see
Writing plugins.
The same tools for agents
Agents connected over MCP get the compute core of the belt as two tools:
utility_catalog— lists the available utilities with their input fields.run_utility— executes one:{"tool": "uuid-gen", "input": {"count": 1}}.
The same surface is available over the REST API for scripts:
GET /api/v1/utils/tools # the catalog
POST /api/v1/utils/run # {"tool": "<id>", "input": {...}}
Typical agent tasks: mint test fixtures
(uuid-gen, token-gen), decode a JWT, resolve a cron schedule (cron-next),
convert JSON to YAML, or evaluate an expression safely.
For server calls, each string input is limited to 1 MiB. Use the field types
and choices returned by utility_catalog: invalid values are rejected rather
than silently converted. Expanded list, CSV, JSON/YAML and text-to-byte results are limited
to 8 MiB of converted text. Reduce the input when this limit is reached.
Deeply nested arithmetic expressions are rejected.
Credential fields, including HMAC/OTP secrets, Basic Auth credentials and JWT
input, are not saved as browser drafts; previously saved values in those fields
are removed.
The server catalogue at GET /api/v1/utils/tools returns tools and count. The optional category query parameter filters by an exact category name; omit it or leave it empty to list all tools. An unknown category returns an empty array and count zero. The MCP utility_catalog tool uses the same filter. POST /api/v1/utils/run accepts tool and input; the successful result fields depend on the selected tool, while invalid requests return an error message.
Managed Mockarty chats and tasks reject run_utility calls that provide input.secret or a non-object input. The whole response is refused before any tool in that response runs; the paid model usage is still recorded. Do not put signing or OTP secrets into an agent prompt. Use the utility directly through the browser or a stateless REST/MCP call from a client you control. A managed credential-reference workflow is not available. In managed chat, response text is shown after the complete response passes this check.
The browser JSON/YAML converter also limits input to 1 MiB and nesting to 128 levels. Cycles and excessively complex or expanded documents are rejected before producing output. The conservative output budget is 8 MiB; a failed or empty conversion clears the previous result.
Plugin utilities use the namespace of the authenticated call. Input fields cannot select another namespace; a disabled plugin or an unavailable activation check prevents execution. Built-in managed agents check the same activation rules as REST/MCP. Their built-in catalogue lists built-ins; use the namespace-scoped REST/MCP catalogue to discover plugin ids. HTTP plugin utilities can make external requests. If a write fails with an unknown outcome, inspect the destination before any retry; the server does not resend it automatically. Cancelled preparation does not start the HTTP request.
Open a plugin card to enter its declared inputs, then select Run. Its availability follows the selected namespace. Inputs and results are not saved as utility drafts; leaving the page or choosing another tool discards them. A catalogue failure offers Retry and is not shown as an empty catalogue. Execution is never retried automatically: after an uncertain external write, check the destination first.
Text ⇄ Bytes uses spaces between bytes by default. Selecting no separator produces fixed-width bytes: 8 digits for binary, 3 for octal/decimal, and 2 for hexadecimal, so the result can be decoded back. In server calls, omit delimiter for spaces or set it to "" for compact output. Values outside 0–255 are rejected. JSON ⇄ CSV retains a final quoted empty cell ("").
When you change namespace, the plugin utility catalogue reloads automatically and a form opened in the previous namespace closes. If the catalogue cannot be loaded, use Retry; an unavailable catalogue is not shown as an empty successful result. Closing a form does not prove that an HTTP request already sent had no effect; inspect its destination before trying that write again.
The server plugin catalogue follows namespace access rules even when namespace is omitted. Auditors need explicit membership in the default namespace; omitting the parameter does not grant access. Other authenticated users retain their default scratchpad access.