A map between UI elements and source for agents. Serves static analysis of Swift accessibility identifiers and test references as an MCP server.
Locus is a Swift CLI tool for iOS test mapping, not a production MCP server. All 5 tools have descriptions (10-80 chars, below the 50-200 char LLM-optimized baseline), but input schemas are either missing or severely incomplete. where_is, what_renders, and match_snapshot have minimal parameter descriptions. affected_tests and missing_identifiers lack proper schema documentation. No output schemas are documented. Error handling is absent, no recovery guidance, no categorization. Tool names use underscores (where_is, what_renders) which is acceptable, but descriptions are too terse to guide LLM selection. No evidence of idempotency, pagination, or composition patterns. The codebase shows strong internal engineering (reverse indexing, orphan detection, deterministic serialization) but zero MCP-specific patterns.
Changed files (git diff, or explicit files) → elements → deduplicated test list.
Match a runtime accessibility-tree dump (JSON) against the map: identifier direct-match (high), label heuristic (medium/low), residual report.
Interactive-looking controls without an accessibilityIdentifier, per file.
Elements anchored in a symbol (Type, Type.member) or a file.
Element(s) with the given accessibility identifier plus the tests that reference it.
All tool descriptions are under 50 characters and lack LLM-optimized context. 'Element(s) with the given accessibility identifier plus the tests that reference it' (80 chars) does not explain WHEN to use this tool vs what_renders, or what the output structure is.
Input schemas are incomplete or missing. affected_tests has 'ref' and 'files' parameters but no type constraints, min/max, or format guidance. missing_identifiers has empty input schema {}. No parameter descriptions explain what values are valid or expected.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., where_is returns 'elements' and 'tests' but structure, field types, and pagination are undocumented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If a git reference is invalid, or an accessibility tree dump is malformed, the tool likely fails silently or returns a cryptic error. No guidance for LLM retry or fallback.
Tool composition is unclear. No documentation of which tools should be called in sequence, or what IDs/references are passed between them. E.g., does where_is output an identifier that feeds into match_snapshot?