MCP server and CLI for debugging Apple Universal Links: fetch, validate, match, explain, and compare apple-app-site-association files
Five tools with complete JSON Schema input definitions and detailed descriptions (avg 180 chars). All parameters are typed and described. Tool names use clear verb_noun patterns (check_, fetch_, compare_, validate_, explain_). Schemas include proper constraints (enums for 'source' parameter). Output structures are well-defined via Rust serde types. No security issues detected (all READ_ONLY, no secrets in params). Main gaps: no error handling guidance in descriptions, no pagination support documented, and output schemas not explicitly documented in tool descriptions for LLM consumption.
Fetches a domain's association file and explains whether it lets an app open a URL. Reaches the network. Returns the decision, a component-by-component trace of why, the file's diagnostics, and every app the URL reaches.
Compares the association file a site serves against the one Apple's CDN is handing to devices. Reaches the network. Compares effective policy rather than bytes, so reformatting reports no change while a stale CDN copy does. Use this when a link works in testing but not on a real device.
Matches a URL against association file contents you already have. No network. Returns the decision and a component-by-component trace naming the rule that decided and the exact component that failed.
Fetches and validates a domain's association file. Reaches the network. Reports HTTP status, Content-Type, size, whether the server redirected (Apple forbids it), every app named in the file, and all diagnostics.
Validates association file contents you already have. No network. Returns stable AASA### diagnostic codes covering unreachable rules, catch-alls that open a whole domain by accident, path patterns that can never match, and broken substitution variables.
Tool descriptions lack error recovery guidance. When a tool fails (e.g., network timeout, invalid domain format), descriptions do not tell the LLM what to do next or how to self-correct.
Output schemas are not documented in tool descriptions. LLMs cannot plan downstream operations or extract required fields without explicit documentation of what each tool returns.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present in schema. While all tools are READ_ONLY, explicit annotations improve LLM reasoning about safety and retry behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Parameter descriptions for 'domain' and 'url' could be more prescriptive about format validation. Current descriptions state what they are but not what formats are invalid or how the tool will respond to malformed input.
STDIO transport only. Server is not remotely accessible and cannot be used by hosted MCP clients. Limits deployment flexibility and integration with cloud-based agent platforms.