Built-in tools
A set of small, local utilities the model can call mid-answer through the same tool-call loop as MCP. They run entirely in Rust on your machine - no network, and apart from the file tools, nothing that touches your files.
How they work
Each tool has its own switch in Settings → Tools, and every one is off by default - turn on only what you want a given model to reach for. The onboarding wizard’s Tools step proposes a Recommended set (everything except the four developer-only tools - Hash, UUID, Base64 and IP / CIDR - and Workspace files, which switches itself on when you pick a folder) with All OFF / Recommended / All ON presets. Continue saves the switches exactly as shown; Skip saves only the ones you changed.
When the model uses a tool, the call shows up in a collapsible block above the answer - “Called N tools”, or “Called calculate tool” for a single call - where you can inspect its arguments and result. Built-in tools never ask before they run; the only exceptions are the file tools that change files (see below).
Loach offers the switched-on tools to whichever model you are chatting with, so the model has to support tool calling to use them. Many local models do, but not all - with Ollama, a model without tool support fails the request with an error saying it does not support tools. Pick a different model, or switch the tools off.
The tools
Each entry gives the switch’s name in Settings → Tools, then the tool name the model sees.
- Calculator (
calculate) - evaluate arithmetic, trigonometry (in radians), functions such assqrt,ln,log10andround, and the constantspiande. Operators group the way programming languages do (100 / 5 * 2is 40,2^3^2is 512),%is the remainder, and scientific notation such as6.022e23or-1e-3works. Results carry 12 significant digits, in scientific notation when very small or very large (5.1e-12). - Date & time (
datetime) - parse, format and do arithmetic on dates and times, with DST-aware timezone conversion, weekday lookup and business-day counting (Saturdays and Sundays are skipped; holidays are not). When converting between timezones, a time without an offset is read as UTC unless the model names the zone it is in. Differences count whole periods elapsed (Jan 15 to Feb 14 is 0 months) and days as calendar days in the chosen zone, and a result that lands in an hour skipped by a DST change is an error rather than a guess. - Count (
count) - count characters, bytes, words, lines or substring hits. Characters can be counted as Unicode code points or as graphemes - the characters a reader sees, so a flag or a skin-toned emoji counts as one. - Hash (
hash) - SHA-224 / 256 / 384 / 512 over UTF-8, hex or base64 input (standard or URL-safe, padding optional). - UUID (
uuid) - generate v4 (random) or v7 (time-ordered) UUIDs, up to 100 per call. - Base64 (
base64) - encode and decode with the standard or URL-safe alphabet. Decoding ignores spaces and line breaks, so wrapped PEM or MIME text works. - JSON (
json) - validate, pretty-print, or pull values out by JSON Pointer (/users/0/name; the leading/can be left off), keeping keys in their original order. A JSONPath such as$.users[0].nameis refused with a hint on writing it as a pointer. - Unit conversion (
unit_convert) - convert between units across nine categories: length, mass, volume, speed, time, area, energy, pressure and temperature, including less common units such as furlongs, troy ounces and parsecs. Unit names ignore case except where it matters: a capitalMis mega and a smallmmilli (MLandmL,MPaandmPa), andCalis the food Calorie, a kcal. Degree signs (°C) and plurals (kilograms) work, a temperature below absolute zero is refused, and results carry 12 significant digits. - Text diff (
diff_text) - unified diff between two strings, by line, word or character. Identical inputs give(no differences). - Sort (
sort) - sort lines lexically, naturally (file2beforefile10) or numerically, with reverse, unique and case-insensitive options. In a numeric sort, lines that aren’t numbers go last, reversed or not, and a case-insensitive unique sort keeps one ofAppleandapple. - IP / CIDR (
ip) - CIDR membership checks and subnet info (network, broadcast, first and last usable host, host count), for IPv4 and IPv6. - PDF (
pdf) - generate a downloadable PDF from a structured spec (see below). - Workspace files - one switch for eight file tools that let the model work in a folder you pick for a chat. They are the only built-in tools that touch the disk, and they have their own page.
Web fetch has a switch on the same tab but is not a tool the model calls: Loach fetches the URLs in your message before the request goes out.
PDF generation
The pdf tool turns a structured spec - headings, paragraphs, bulleted and numbered lists, simple tables, horizontal rules and page breaks - into a real A4 PDF. The result lands in the chat as a previewable, savable attachment, so you can ask the model to draft a document and pull it straight out. The bundled font covers Latin-script text only - European accents included - plus common punctuation and currency symbols. Cyrillic, Greek, CJK, emoji and anything else outside it print as ?, and the tool tells the model how many characters were replaced so it can let you know. A document can run to 200 pages, counted as they print. The title becomes the file name, keeping its letters in any script. Images and merging existing PDFs are not supported.
Limits
- 20 seconds per call - a built-in tool that runs longer is stopped and the model is told to try smaller input. The file tools that change files are the exception: they always run to the end.
- 32 KB back to the model - a longer result is cut, with a note telling the model so; the tool-call block still shows the whole result.
- 10 rounds per reply - tools can run in the first nine rounds with the model; the tenth goes out without tools so the model wraps up. See “Stopped after 10 tool-use turns”.
Built-in tools never touch the network, and only the file tools touch your files. Even so, Private Chat doesn’t offer them: like MCP tools, they are left out there, because its window has nowhere to show a tool call, its result or a PDF the model makes.