Delegate text work to a local model on oMLX — content never leaves this machine
Five tools with complete, well-structured schemas and strong descriptions. All tools have clear, action-oriented names (local_*) and detailed docstrings explaining WHEN to use them (confidentiality context, latency tradeoffs). Input schemas are fully typed with required fields and parameter descriptions. Tool annotations (readOnlyHint, openWorldHint) are correctly applied. Main gaps: no output schemas documented, no error handling guidance, no pagination/limits for local_models, and descriptions could be more concise (some exceed 200 chars). Naming is consistent and verb-driven. Parameters are well-described with sensible defaults.
Assign text to one of a set of categories, using a model running on THIS machine so the content never leaves it. Useful for triaging confidential material in bulk — routing messages, tagging transcript segments, sorting records — where sending each item to a cloud model is not acceptable.
Send an arbitrary prompt to a model running on THIS machine. The escape hatch for local work that the task-specific tools do not cover; prefer local_summarize / local_rewrite / local_classify when they fit, since they carry better defaults. Reasoning is off by default because it costs several times the latency; enable it for problems that genuinely need working-out.
List the models available on the local oMLX server, with each one's context window and whether it is currently loaded in memory. An already-loaded model answers immediately; a cold one costs a load first.
Rewrite text according to an instruction, using a model running on THIS machine so the content never leaves it. Suited to cleaning up ASR transcripts, fixing recognition errors, adjusting tone, or reformatting — the cases where the raw text is confidential but the result is needed. Give the instruction in the same spirit you would give a human editor.
Summarize text using a model running on THIS machine, so the content is never sent to any cloud API. Use this whenever the text must not leave the machine — third-party transcripts and recordings, unpublished research, student or client data, anything covered by a confidentiality obligation. Slower than summarizing directly (seconds, and up to a minute if the model has to load), so prefer it for content that requires it rather than for speed.
Output schemas not documented. LLMs cannot infer what fields local_summarize, local_rewrite, local_classify, and local_complete return, forcing them to guess downstream field names and risk extraction errors.
local_models has empty input schema (no properties). While correct for a no-argument tool, the description lacks detail on what fields are returned (model name, context window, loaded status) and whether results are paginated or capped.
No error handling guidance. Tools do not document what happens on model load failure, timeout, or invalid input (e.g., categories array with <2 items in local_classify). LLMs have no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Descriptions exceed 200 chars for local_summarize, local_rewrite, local_classify (baseline p90=392 but best practice is 50-200 for clarity). Verbose descriptions waste tokens and bury key decision criteria.
local_complete's 'thinking' parameter defaults to false but lacks guidance on when to enable it. Description says '3-4x slower' but does not explain the reasoning quality tradeoff or recommend problem types where it helps.