Docs Developer Utilities

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.