Apple on-device ML capabilities exposed as MCP tools: Vision (OCR, classification), NaturalLanguage (sentiment, tokenization), Translation, and Foundation Models (Apple Intelligence)
Five tools with complete input/output schemas and strong descriptions (avg 180 chars). All parameters typed and constrained. Tool names follow verb_noun pattern (vision_*, nl_*, fm_*, translate). Annotations present (readOnlyHint, idempotentHint). Key gaps: no error handling guidance (recovery paths missing), no parameter descriptions for optional fields (maxResults, minConfidence lack context on defaults), and output schemas lack per-field descriptions. Composition is clean, each tool does one thing. Naming is clear and action-oriented.
Generate text with Apple's on-device foundation model (Apple Intelligence). Requires macOS 26+, Apple Silicon, and Apple Intelligence enabled in System Settings. Use this for tasks that benefit from running fully on-device with no network: classification, short summarization, structured extraction from short text. The on-device model is ~3B params — prefer cloud models for long-form reasoning.
Analyze text using Apple's NaturalLanguage framework. Detects the dominant language (BCP-47 tag), computes a sentiment score from -1.0 (negative) to 1.0 (positive), and optionally tokenizes the text with per-token lemma and lexical class (noun/verb/etc). Entirely offline. Use this for quick language-aware preprocessing of text.
Translate text between languages using Apple's on-device Translation framework. Both source and target languages are required (BCP-47 tags, e.g. "en", "zh-Hans", "ja"). First use of a language pair may require the system to download the language pack — this can fail in headless contexts where the OS cannot prompt the user. No data leaves the device once language packs are installed.
Classify the dominant subjects in an image using Apple's on-device Vision framework. Returns ranked labels with confidence (0..1). Runs entirely offline. Use this to get a high-level idea of what an image contains (e.g. "dog", "mountain", "document"). For text extraction use vision_ocr instead.
Output schemas lack per-field descriptions. ClassifyTool.outputSchema defines 'labels' array with 'identifier' and 'confidence' fields, but no descriptions explain what identifier values mean (e.g., 'dog', 'document') or confidence range semantics. LLMs cannot reason about output structure without field-level docs.
Optional parameters lack default-value context in descriptions. vision_classify maxResults defaults to 10, minConfidence to 0.1, but descriptions do not state these defaults. LLMs cannot reason about omission behavior without explicit default documentation.
No error handling or recovery guidance. Tools lack descriptions of failure modes (e.g., 'If language pack download fails in headless context, try offline mode' for translate). Error responses will not guide LLM recovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
Recognize text in an image using Apple's on-device Vision framework. Supports multiple languages simultaneously (e.g. ["zh-Hans", "en-US"]) and returns recognized text along with per-block bounding boxes and confidence. Runs entirely offline; no data leaves the device. Use this for screenshots, scanned documents, photos of text. For barcodes use vision_detect_barcodes (not yet available); for object classification use vision_classify.
fm_generate temperature parameter lacks guidance on model-specific defaults. Description says 'default model-defined' but does not explain what that means or when to use temperature. LLMs need explicit guidance on parameter semantics.
vision_ocr language parameter description mentions 'auto-detect' but does not explain behavior when omitted. Does auto-detect run all supported languages or a subset? What is the performance cost? LLMs need explicit semantics.