apple-docs
Provides search and retrieval of Apple Developer Documentation, including frameworks, APIs, SwiftUI, UIKit, WWDC videos, and code examples for iOS, macOS, watchOS, tvOS, and visionOS, along with Apple Human Interface Guidelines and Design Resources.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@apple-docshow do I use @Observable in SwiftUI?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Emasoft Apple Documentation plugin
Apple Developer Documentation for Claude Code: search iOS, macOS, watchOS, tvOS and visionOS documentation, frameworks, APIs, SwiftUI, UIKit and WWDC videos, and get Swift/Objective-C code examples, API references and technical guides directly in your Claude Code session. The plugin bundles an MCP (Model Context Protocol) server, so installing the plugin is all it takes.
This plugin (emasoft-apple-documentation-plugin) is based on kimsungwhee/apple-docs-mcp by kimsungwhee (MIT license). It is an independent fork, repackaged as a Claude Code plugin; it is not published to npm.
Features
Smart Search: Intelligent search across Apple Developer Documentation for SwiftUI, UIKit, Foundation, CoreData, ARKit, and more
Complete Documentation Access: Full access to the Apple JSON API for Swift, Objective-C, and framework documentation
Apple Design and HIG Access: Read Human Interface Guidelines JSON, Apple Design pages, and Design Resources catalog entries
Design Resource Previews: Return Apple-provided HIG images and resource thumbnails as MCP image content blocks
Downloadable Design Resources: Download direct Apple-hosted templates, fonts, tools, and archives into a local MCP resource cache
Framework Index: Browse hierarchical API structures for iOS, macOS, watchOS, tvOS, visionOS frameworks
Technology Catalog: Explore Apple technologies including SwiftUI, UIKit, Metal, Core ML, Vision, and ARKit
Documentation Updates: Track WWDC 2025/2026 announcements, iOS 27, macOS 27, and latest SDK releases
Technology Overviews: Comprehensive guides for Swift, SwiftUI, UIKit, and all Apple development platforms
Sample Code Library: Swift and Objective-C code examples for iOS, macOS, and cross-platform development
WWDC Video Library: Search WWDC 2014-2026 sessions with transcripts, Swift/SwiftUI code examples, and resources (the data is downloaded once, on first use)
Related APIs Discovery: Find SwiftUI views, UIKit controllers, and framework-specific API relationships
Platform Compatibility: iOS 13+, macOS 10.15+, watchOS 6+, tvOS 13+, visionOS compatibility analysis
High Performance: Optimized for Xcode, Swift Playgrounds, and AI-powered development environments
Smart UserAgent Pool: Intelligent UserAgent rotation system with automatic failure recovery and performance monitoring
Multi-Platform: Complete iOS, iPadOS, macOS, watchOS, tvOS, and visionOS documentation support
Beta and Status Tracking: Beta and newly released APIs, deprecated UIKit methods, new SwiftUI features tracking
Related MCP server: Apple Dev MCP Server
Installation
Requirements
node(Node.js 22 or later) on yourPATH. Claude Code runs the bundled server withnode, and its native installer does not ship Node.js. Check withnode --version.About 11 MB of disk space for the WWDC data, downloaded once the first time a WWDC tool is used (see WWDC Data).
From a Claude Code session
/plugin marketplace add Emasoft/emasoft-plugins
/plugin install emasoft-apple-documentation-plugin@emasoft-pluginsFrom a terminal
claude plugin marketplace add Emasoft/emasoft-plugins
claude plugin install emasoft-apple-documentation-plugin@emasoft-plugins --scope userRestart Claude Code (or run /reload-plugins) to activate the plugin, then run /mcp to check that the apple-docs server of this plugin is connected.
Update and uninstall
claude plugin update emasoft-apple-documentation-plugin@emasoft-plugins
claude plugin uninstall emasoft-apple-documentation-pluginTool names in Claude Code
Claude Code namespaces the tools of a plugin MCP server, so the tool search_apple_docs appears as mcp__plugin_emasoft-apple-documentation-plugin_apple-docs__search_apple_docs. You never have to type these names: describe what you need and Claude picks the tool.
Troubleshooting
The server fails to start, or
/mcpshows it as failed? Claude Code launches the server with the commandnode. GUI apps do not always inherit thePATHof your shell: runwhich nodein a terminal, and make sure that directory is on thePATHof the process that starts Claude Code. The plugin needs Node.js 22 or later.search_apple_docsreturning nothing, or erroring? It depends on an undocumented Apple search backend (devintserv.msc.sbz.apple.com) that the search page of developer.apple.com uses internally. If Apple changes its response shape,search_apple_docscan break until this plugin catches up.get_apple_doc_content,search_framework_symbolsand the WWDC tools do not depend on that endpoint and keep working.search_apple_docsfeels slow? Apple streams the full result set, so a search typically takes 5 to 25 seconds (median about 10). Repeating the same query within 10 minutes is answered from a local cache.
Usage
Ask Claude in plain language; it chooses the right tool. Examples:
Smart Search
"Search for SwiftUI animations"
"Find withAnimation API documentation"
"Look up async/await patterns in Swift"
"Show me UITableView delegate methods"
"Search Core Data NSPersistentContainer examples"
"Find AVFoundation video playback APIs"Documentation Access
"Get detailed information about the SwiftUI framework"
"Show me withAnimation API with related APIs"
"Get platform compatibility for SwiftData"
"Access UIViewController documentation with similar APIs"
"Show me NSManagedObjectContext documentation"
"Get URLSession async/await methods"Apple Design and HIG
"Search Apple Design docs for layout"
"Read the HIG page about color"
"List Apple Design Resources for iOS templates"
"Download the Apple Design resource with this resourceId"
"Show Apple Design examples for the layout HIG page"Framework Exploration
"Show me SwiftUI framework API index"
"List all UIKit classes and methods"
"Browse ARKit framework structure"
"Get WeatherKit API hierarchy"
"Explore Core ML model loading APIs"
"Show Vision framework image analysis APIs"API Discovery
"Find APIs related to UIViewController"
"Show me similar APIs to withAnimation"
"Get all references from SwiftData documentation"
"Discover alternatives to Core Data NSManagedObject"Technology and Platform Analysis
"List all Beta frameworks in the latest iOS"
"Show me Graphics & Games technologies"
"What machine learning frameworks are available?"
"Analyze platform compatibility for Vision framework"Documentation Updates
"Show me the latest WWDC updates"
"What is new in SwiftUI?"
"Get technology updates for iOS"
"Show me release notes for Xcode"
"Find beta features in the latest updates"Technology Overviews
"Show me technology overviews for app design and UI"
"Get comprehensive guides for games development"
"Explore AI and machine learning overviews"
"Show me iOS-specific technology guides"
"Get data management technology overviews"Sample Code Library
"Show SwiftUI sample code projects"
"Find sample code for machine learning"
"Get UIKit example projects"
"Show featured WWDC sample code"
"Find Core Data sample implementations"
"Show only beta sample code projects"WWDC Video Search
"Search WWDC videos about SwiftUI"
"Find WWDC sessions on machine learning"
"Show me WWDC 2026 videos"
"Search for async/await WWDC talks"
"Find WWDC videos about Swift concurrency"
"Show accessibility-focused WWDC sessions"WWDC Video Details
"Get details for WWDC session 10176"
"Show me the transcript for WWDC23 session on SwiftData"
"Get code examples from WWDC video 10019"
"Show resources from Vision Pro WWDC session"
"Get transcript for the Meet async/await in Swift session"WWDC Topics and Years
"List all WWDC topics"
"Show me Swift topic WWDC videos"
"Get WWDC videos about developer tools"
"List WWDC videos from 2023"
"Show all SwiftUI and UI frameworks sessions"
"Get machine learning WWDC content"Advanced Usage
"Find related APIs for @State with platform analysis"
"Resolve all references from SwiftUI documentation"
"Get platform compatibility analysis for Vision framework"
"Find similar APIs to UIViewController with deep search"Available Tools
Tool | Description | Key Features |
| Search Apple Developer Documentation | Official search API, find specific APIs, classes, methods |
| Get detailed documentation content | JSON API access, optional enhanced analysis (related/similar APIs, platform compatibility) |
| Search Apple Design and HIG content | HIG JSON references, Design pages, Design Resources catalog |
| Read Apple Design and HIG pages | HIG JSON rendering, HTML fallback for |
| List Apple Design Resources | Stable resource IDs, category/platform/format filters, previews and links |
| Download direct Apple Design resources | Local cache, MCP |
| Return Apple Design visual examples | MCP |
| Browse all Apple technologies | Category filtering, language support, beta status |
| Search symbols in specific framework | Classes, structs, protocols, wildcard patterns, type filtering |
| Find related APIs | Inheritance, conformance, "See Also" relationships |
| Batch resolve API references | Extract and resolve all references from documentation |
| Platform compatibility analysis | Version support, beta status, deprecation info |
| Discover similar APIs | Official Apple recommendations, topic groupings |
| Track Apple documentation updates | WWDC announcements, technology updates, release notes |
| Get technology overviews and guides | Comprehensive guides, hierarchical navigation, platform filtering |
| Browse Apple sample code projects | Framework filtering (with limitations), keyword search, beta status |
| Browse WWDC video sessions | Offline transcripts and code, topic/year filtering |
| Full-text search of WWDC transcripts and code | Specific discussions, API mentions, implementation examples |
| Get a complete WWDC session | Full transcript, code examples, resources |
| Browse code examples from WWDC sessions | Implementation patterns with session context |
| List WWDC topic categories with their IDs | Topic IDs usable as filters in |
| Discover sessions related to a video | Prerequisites, follow-up sessions, similar talks |
| List all available WWDC years | Conference years with video counts and statistics |
Technical Architecture
emasoft-apple-documentation-plugin/
├── .claude-plugin/plugin.json # Claude Code plugin manifest
├── .mcp.json # Registers the bundled MCP server (apple-docs)
├── servers/apple-docs/
│ ├── index.js # Committed esbuild bundle, the server users run
│ └── THIRD_PARTY_LICENSES.txt # Licenses of the bundled dependencies
├── src/ # TypeScript sources of the server
│ ├── index.ts # MCP server entry point with all tools
│ ├── tools/ # MCP tool implementations (docs, design, WWDC, ...)
│ └── utils/ # Cache, HTTP client, UserAgent pool, error handling
├── scripts/ # build-bundle.mjs and publish.py
├── tests/ # Jest test suites
└── package.json # Development dependencies and scripts (private)Performance Features
Memory-Based Caching: Custom cache implementation with automatic cleanup and TTL support
Smart UserAgent Pool: Intelligent rotation system with automatic failure recovery and performance monitoring
Dynamic Headers: Realistic browser headers generation (Accept, Accept-Language, User-Agent)
Smart Search: Official Apple search API with enhanced result formatting
Enhanced Analysis: Optional related APIs, platform compatibility, and similarity analysis
Error Resilience: Graceful degradation with comprehensive error handling
Type Safety: Full TypeScript with Zod runtime validation
Zero Runtime Dependencies: The server ships as one bundled file, with no node_modules to install
Caching Strategy
Content Type | Cache Duration | Cache Size | Reason |
API Documentation | 30 minutes | 500 entries | Frequently accessed, moderate updates |
Search Results | 10 minutes | 200 entries | Dynamic content, user-specific |
Framework Indexes | 1 hour | 100 entries | Stable structure, less frequent changes |
Technologies List | 2 hours | 50 entries | Rarely changes, large content |
Documentation Updates | 30 minutes | 100 entries | Regular updates, WWDC announcements |
Apple Design Content | 2 hours | 100 entries | HIG and Design pages are stable during a session |
Apple Design Resources | 2 hours | 20 entries | Catalog metadata changes less often than page reads |
Downloaded Apple Design files are cached outside the plugin directory: in a temporary directory created per server process, or in the directory named by APPLE_DOCS_MCP_CACHE_DIR (see Configuration). They are exposed through MCP resources/list and resources/read.
WWDC Data
The WWDC video data (2014-2026) is not shipped with the plugin. The first call of a WWDC tool downloads one archive (about 11 MB: 1,400+ sessions with full transcripts, 19 topic categories) from the plugin's data release, checks its SHA-256 and extracts it into ${CLAUDE_PLUGIN_DATA}/wwdc-data/v2 (or into wwdc-data/v2 under APPLE_DOCS_MCP_CACHE_DIR, or under ~/.cache/apple-docs-mcp, when CLAUDE_PLUGIN_DATA is not set). Later calls, in any session, read it from disk. Starting the server and every other tool never download it. Videos, slides and sample projects are never downloaded: the WWDC tools only return their links.
To install the data offline or on a machine without access to GitHub, extract the archive yourself and point the plugin at it:
mkdir -p /path/to/wwdc-data
curl -L -o wwdc-data.tar.gz https://github.com/Emasoft/apple-docs-wwdc-data/releases/download/v2/wwdc-data.tar.gz
tar xzf wwdc-data.tar.gz -C /path/to/wwdc-data
export APPLE_DOCS_MCP_WWDC_DATA_DIR=/path/to/wwdc-dataThe SHA-256 of the archive is 9e436884c29acb8ccef0b1077bc0713e1d380be513ba174cbf865fa7f17bc3bb. If the download fails, the WWDC tools report an error naming the URL, the target directory and APPLE_DOCS_MCP_WWDC_DATA_DIR.
Note: Update the plugin to get a newer WWDC data release.
Configuration
The server reads these optional environment variables when it starts. Set them in the environment of the process that starts Claude Code, because a Claude Code launched from the GUI does not see variables exported in a shell profile (observed on Claude Code 2.1.285; not documented by Anthropic). To set them, either start Claude Code from a terminal where they are exported, or, on macOS, run launchctl setenv NAME value and then restart Claude Code (launchctl values do not survive a reboot).
Variable | Description | Default |
| Directory for downloaded Apple Design files (and, when | A temporary directory per server process (WWDC data: |
| Directory with an already extracted WWDC data archive; nothing is downloaded when it is set (see WWDC Data) | Unset: the data is downloaded on first use |
| Size limit of the download cache, in bytes | 1073741824 (1 GiB) |
| Set to | Off |
| Accept-Language header sent to Apple servers |
|
| Set to | Off |
| Set to | Off |
| Set to | Off |
| Set to | Off |
| Set to | Off |
| Jev provider: | None |
| API key for the | None |
| API key for the | None |
| URL and API key for the | None |
The server includes a pool of 12+ pre-configured UserAgent strings (Chrome, Firefox, Safari and Edge on macOS, Windows and Linux) that it rotates with automatic failure recovery.
Jev semantic selection (optional, paid)
search_wwdc_content and search_apple_docs can use the Jev relevance-scoring service to narrow their results to the 1-5 that best match the query, each printed with a relevance score. It is off by default. To enable it, set APPLE_DOCS_MCP_JEV_RERANK=1, choose a provider with APPLE_DOCS_MCP_JEV_PROVIDER and set that provider's key (TYPESAFE_API_KEY, OPENROUTER_API_KEY, or JEV_GATEWAY_URL plus JEV_GATEWAY_API_KEY).
Parameters: both tools accept
select(trueorfalse; the default followsAPPLE_DOCS_MCP_JEV_RERANK) andmaxResults(1-5, default 5, ignored when selection is off).select: truewhile Jev is not enabled is an error. If no result scores above the relevance threshold, the single best result is returned with a "No strong match" warning.limitinsearch_wwdc_content: with selection on,limitis the recall width: that many videos, ranked by match count, are scored by Jev (maximum 256). Whenlimitis omitted, every candidate up to 256 is scored. With selection off,limitkeeps its meaning (default 20, maximum 100). When the scan matched more videos than were scored, the header reads "Selected N of M scored (of T matching)".What is sent, and to whom: with selection on, the query and, for each candidate, its title, summary (Apple documentation results only), URL, topics and, for WWDC, an excerpt of its first match (transcript or code) are sent to the provider you chose:
api.typesafe.aifortypesafe,openrouter.aiforopenrouter, or the URL inJEV_GATEWAY_URLforgateway, together with your API key. Nothing is sent when selection is off.Cost: it is a paid service, billed by the provider to your key. Measured order of magnitude: about $0.0001 for about 17 Apple documentation results, about $0.001 for about 90 WWDC candidates, up to about $0.003 at the 256-candidate maximum. Selection typically adds under 2 seconds; at most about 15 seconds when the provider is slow or retrying.
Fail fast: when selection is on, any failure (a missing key, an invalid provider, a network or provider error after retries) returns an error instead of unranked results. Pass
select: falseto get the unfiltered results.
The selection design is ported from jgrep (MIT).
Development
This section is for maintainers; plugin users never need it. Requirements: Node.js 22 or later and pnpm (the version is pinned by packageManager in package.json).
pnpm install --frozen-lockfile # install the development dependencies
pnpm build # regenerate servers/apple-docs/index.js and THIRD_PARTY_LICENSES.txt
pnpm typecheck # tsc --noEmit
pnpm lint # eslint src
pnpm test # Jest test suites
pnpm start # run the built stdio server (node servers/apple-docs/index.js)The bundle is committed.
servers/apple-docs/index.jsis what Claude Code runs, with no dependency installation step on the user machine. After changing anything undersrc/or a bundled dependency, runpnpm buildand commit the result: a freshness test (tests/bundle-freshness.test.ts) fails when the committed bundle differs from a fresh build.No npm or bun lockfile. Claude Code runs
npm ciin the plugin root whenpackage.jsonsits next to apackage-lock.json,npm-shrinkwrap.json,bun.lockorbun.lockb, which would install every development dependency on every user machine. This repository uses pnpm, whose lockfile Claude Code ignores. A guard test (tests/plugin-lockfile-guard.test.ts) fails if one of those files appears.Dependency updates. A cheerio upgrade must re-verify the redirect to its
load-parseentry inscripts/build-bundle.mjs(runpnpm buildand the standalone bundle test).Release. Releases are cut with the CPV canonical pipeline:
uv run python scripts/publish.py(lint, validation, tests, version bump inplugin.json,package.jsonandpyproject.toml, changelog, tag, push and GitHub release). Nothing is published to npm.
Contributing
Contributions are welcome! Here is how to get started:
Fork the repository
Create a feature branch:
git checkout -b feature/amazing-featureCommit your changes using Conventional Commits (checked by commitlint in CI):
git commit -m "feat: add amazing feature"Push to the branch:
git push origin feature/amazing-featureOpen a Pull Request
License
MIT License, see LICENSE for details. The original work is copyright kimsungwhee; additions are copyright Emasoft. The licenses of the dependencies bundled into the server are listed in servers/apple-docs/THIRD_PARTY_LICENSES.txt.
Disclaimer
This project is not affiliated with or endorsed by Apple Inc. It uses publicly available Apple Developer Documentation APIs for educational and development purposes.
Available Tools
23 toolsbrowse_wwdc_topicsARead-only
List all WWDC topic categories with their IDs. Essential first step before using list_wwdc_videos with topic filtering. Returns topic IDs like "swiftui-ui-frameworks" that can be used in other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Filter topic videos by year. Only when browsing specific topic. | |
| limit | No | Max videos per topic (default: 20). | |
| topicId | No | Topic ID to explore. Available IDs: "accessibility-inclusion", "app-services", "app-store-distribution-marketing", "audio-video", "business-education", "design", "developer-tools", "essentials", "graphics-games", "health-fitness", "machine-learning-ai", "maps-location", "photos-camera", "privacy-security", "safari-web", "spatial-computing", "swift", "swiftui-ui-frameworks", "system-services". Leave empty to see all topics with video counts. | |
| includeVideos | No | List videos in the topic. Set false for topic structure only. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, and the description adds value by specifying the output (IDs) and their reuse in other tools. No destructive behavior or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences directly convey purpose, usage, and output without waste. Front-loaded with key action and appropriate detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description sufficiently explains the return value (IDs and usage). Parameter meanings are fully covered in schema. Complete enough for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds context beyond schema by mentioning that leaving topicId empty shows all topics with video counts, and provides example IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists WWDC topic categories with IDs. It distinguishes itself from siblings like 'list_wwdc_videos' by positioning as the essential first step for topic filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Essential first step before using list_wwdc_videos with topic filtering', providing clear context and instruction on when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_apple_design_resourceA
Download a selected direct Apple Design resource into the local MCP cache and return MCP resource links. External Figma, Sketch web, and sketch:// links are reported as metadata and are not browser-authenticated downloads.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Direct Apple-hosted resource URL to download. Allowed hosts include developer.apple.com, docs-assets.developer.apple.com, devimages-cdn.apple.com, and itunespartner.apple.com. | |
| maxBytes | No | Optional maximum download size in bytes. Default: 52428800. | |
| resourceId | No | Stable resource ID returned by list_apple_design_resources. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false; the description adds real substance: the payload is written into a local MCP cache, the return is MCP resource links, and non-Apple-hosted links are metadata-only rather than authenticated downloads. It does not contradict the annotation and clarifies mutation side effects the annotation alone would not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the download action and destination, then the exception case. No filler; could be marginally richer on invocation choices but no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by stating the return is MCP resource links. Combined with a fully documented schema and the cache-write disclosure, an agent has enough to call it correctly; the only thin spot is tool-selection guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so allowed hosts, size limits/defaults, and the resourceId origin are already documented. The description adds no parameter-level detail beyond noting that selected resources come via list_apple_design_resources, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (download), resource (Apple Design resource), destination (local MCP cache), and return shape (MCP resource links). It is distinguishable from list_apple_design_resources and the various content-fetching siblings, though it never names an alternative in prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a useful scope limit — external Figma/Sketch web and sketch:// links are only reported as metadata and are not downloaded — which functions as a when-not condition. However, it offers no explicit guidance on when to call this versus list_apple_design_resources or the content tools, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similar_apisARead-only
Discover alternative and related APIs. Finds APIs with similar functionality, modern replacements for deprecated APIs, and platform-specific alternatives. Perfect when looking for better ways to implement functionality.
| Name | Required | Description | Default |
|---|---|---|---|
| apiUrl | Yes | Starting API URL. Example: "https://developer.apple.com/documentation/uikit/uialertview" (finds modern alternatives) | |
| searchDepth | No | How thoroughly to search. "shallow" = direct recommendations only, "medium" = topic siblings, "deep" = full relationship analysis. Default: "medium" | |
| filterByCategory | No | Focus on specific functionality like "Animation", "Navigation", "Data". Case-sensitive partial match. | |
| includeAlternatives | No | Include functionally similar APIs that might be better choices. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, which the description supports by using read-only verbs like 'discovers' and 'finds'. However, the description does not add deeper behavioral traits such as result format, pagination, or rate limits. With annotations covering safety, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence adds value. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters and no output schema, the description covers purpose and usage context well. It does not describe the output format, but for a discovery tool, it is mostly complete. Minor gap for a high score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already well-documented. The description reinforces the purpose of includeAlternatives but does not add new semantics beyond the schema. Baseline 3 is appropriate when the schema carries the burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds alternative and related APIs, including similar functionality, modern replacements, and platform-specific alternatives. It distinguishes from sibling tools by emphasizing discovery of better ways to implement functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use ('Perfect when looking for better ways to implement functionality'), but does not explicitly mention when not to use or contrast with siblings like get_related_apis. It provides clear context but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apple_design_contentARead-only
Read Apple Design and Human Interface Guidelines URLs. HIG pages use Apple JSON data when available, and other /design/ pages use HTML parsing.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Apple Design URL. Examples: "https://developer.apple.com/design/human-interface-guidelines/layout" or "https://developer.apple.com/design/resources/". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds a real behavioral nuance — HIG pages are served from Apple JSON when available while other /design/ pages fall back to HTML parsing — but says nothing about failure modes, rate limits, or what the returned content looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and the parsing caveat second. Nothing is wasted, though the second sentence leans toward implementation detail rather than agent-relevant guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with annotations covering safety and a fully documented schema, this is nearly complete. No output schema exists, so the description could say more about what content is returned, but the essential call contract is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single parameter, so the schema already carries the load. The description adds only marginal meaning by indicating the two URL categories the parameter accepts; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Read Apple Design and Human Interface Guidelines URLs.' It implicitly separates itself from the generalist sibling get_apple_doc_content by scoping to /design/ and HIG URLs, though it never names an alternative outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the accepted URL shapes (HIG pages vs other /design/ pages) hint at when this tool applies, but there is no explicit when-to-use or when-to-prefer-a-sibling statement against get_apple_doc_content or search_apple_design_docs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apple_design_examplesARead-only
Return Apple Design visual examples as MCP image content blocks with base64 data and MIME type. Supports HIG images, resource thumbnails, and direct image asset URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Apple Design URL, HIG URL, resource preview URL, or direct image URL. | |
| limit | No | Maximum number of image blocks. Default: 3. | |
| query | No | Search query for resource thumbnails. | |
| resourceId | No | Stable resource ID returned by list_apple_design_resources. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply readOnlyHint, so the description usefully adds that the return payload is base64 image blocks with MIME types, information absent from any structured field. It omits failure modes, rate limits, or behavior when a URL yields no images.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary outcome and output format, with zero filler. The second sentence is a compact enumeration of supported input kinds that earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, explaining the image-block return is valuable, but with four all-optional parameters there is no guidance on how url, query, and resourceId interact or which takes precedence. For a tool whose invocation hinges on picking the right input mode, that gap matters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented (url, limit, query, resourceId). The description adds no syntax, format, or mutual-exclusion detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Return) and resource (Apple Design visual examples) and specifies the output form (MCP image content blocks). It is distinguishable from content-oriented siblings like get_apple_design_content, but it never explicitly names or contrasts with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It hints at usage modes ('HIG images, resource thumbnails, and direct image asset URLs') but gives no explicit when-to-use vs when-not guidance or alternatives across the many siblings. The agent must infer that this is the image-returning counterpart to get_apple_design_content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apple_doc_contentARead-only
Get detailed content from a specific Apple Developer Documentation page. Use this after search_apple_docs to get full documentation. Supports enhanced analysis options for comprehensive API understanding. Best for: reading API details, understanding usage, checking availability.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL of the Apple Developer Documentation page. Must start with https://developer.apple.com/documentation/. Example: "https://developer.apple.com/documentation/uikit/uiviewcontroller" | |
| includeReferences | No | Resolve and include all referenced types and APIs. Helps understand dependencies. Default: false | |
| includeRelatedApis | No | Include inheritance hierarchy and protocol conformances. Useful for understanding API relationships. Default: false | |
| includeSimilarApis | No | Discover APIs with similar functionality. Great for finding alternatives. Default: false | |
| includePlatformAnalysis | No | Analyze platform availability and version requirements. Essential for cross-platform development. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the readOnlyHint annotation by detailing that the tool retrieves content and supports enhanced analysis options (includeRelatedApis, includeReferences, etc.). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences) and front-loads the core purpose. Every sentence adds value: positioning after search, mentioning analysis options, and listing best uses. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema), the description covers purpose, workflow, and optional features adequately. It does not explain return values, but the schema hints at the output. Still sufficient for an agent to understand when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already explains each parameter well. The description does not add significant additional meaning beyond what the schema provides, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('content from a specific Apple Developer Documentation page'), clearly distinguishing it from sibling tools like search_apple_docs (which finds pages) and find_similar_apis (which suggests alternatives).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends using this after search_apple_docs and lists best use cases (reading API details, understanding usage, checking availability). It does not explicitly exclude other usage scenarios or name alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentation_updatesARead-only
Track latest Apple platform updates, new APIs, and changes. Shows WWDC announcements, framework updates, and release notes. Essential for staying current with Apple development. For detailed WWDC videos, use WWDC-specific tools.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | WWDC year filter ("2026", "2025", etc.). Only for wwdc category. | |
| limit | No | Max results (default: 50). Sorted by relevance and date. | |
| category | No | Update type filter. "wwdc" = conference highlights, "technology" = API updates, "release-notes" = version changes. Default: "all" | |
| technology | No | Filter by framework (case-sensitive). Examples: "SwiftUI", "UIKit", "ARKit". Get names from list_technologies. | |
| includeBeta | No | Include beta/preview features. Default: true | |
| searchQuery | No | Search keywords. Examples: "async", "performance", "widgets". Case-insensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations supply readOnlyHint=true, so the safety profile is covered. The description adds useful content-scope detail (what categories of updates are surfaced), but says nothing about auth requirements, pagination, result freshness, or ordering behavior beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core capability and ending with the alternative pointer. No filler or repetition of the name, though the "Essential for staying current" sentence is mildly promotional rather than informational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-parameter retrieval tool with a fully documented schema and no output schema, the description covers purpose and content scope adequately. It could be tighter on how results are ordered and how year interacts with non-wwdc categories, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters including the year/category coupling and enum values are already documented in the schema. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: tracks Apple platform updates, new APIs, and changes, and enumerates the content types (WWDC announcements, framework updates, release notes). It clearly retrieves documentation news, distinguishing it from content-fetching siblings, though it doesn't name a specific alternative tool by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Essential for staying current with Apple development" is motivational rather than prescriptive, and the only routing hint is a vague pointer to "WWDC-specific tools" for detailed videos. No explicit when-to-use vs. when-not conditions relative to siblings like search_apple_docs or list_wwdc_videos.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_compatibilityARead-only
Check API availability across Apple platforms and OS versions. Shows minimum deployment targets, deprecations, and platform-specific features. Critical for cross-platform development. Use when: planning app requirements, checking API availability, finding platform alternatives.
| Name | Required | Description | Default |
|---|---|---|---|
| apiUrl | Yes | API URL to check compatibility. Example: "https://developer.apple.com/documentation/swiftui/list" | |
| compareMode | No | Check single API or entire framework. "framework" shows all APIs in the framework. Default: "single" | |
| includeRelated | No | Also check related APIs' compatibility. Useful for finding platform-specific alternatives. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true, indicating a read operation. The description adds behavioral context by detailing the output (minimum deployment targets, deprecations, platform-specific features) and emphasizing its importance for cross-platform development, going beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: purpose, output, and usage. Every sentence adds value, is front-loaded, and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three well-documented parameters and no output schema, the description adequately covers purpose, output, and usage. It lacks details on return format but is sufficient for the agent to decide when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good parameter descriptions (e.g., 'API URL to check compatibility', 'Check single API or entire framework'). The description does not repeat parameter details, but baseline 3 is appropriate since schema already provides sufficient semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks API availability across Apple platforms and OS versions, listing outputs like deployment targets and deprecations. It distinguishes itself from siblings by focusing on platform compatibility, a unique function among the listed tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly includes 'Use when:' with three specific scenarios: planning app requirements, checking API availability, finding platform alternatives. It does not state when not to use or list alternatives, but the provided use cases give clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sample_codeARead-only
Browse complete sample projects from Apple. Full working examples demonstrating best practices and implementation patterns. Different from search_apple_docs which returns code snippets. Use for learning by example.
| Name | Required | Description | Default |
|---|---|---|---|
| beta | No | Beta samples: "include" = all, "exclude" = stable only, "only" = beta only. Default: "include" | |
| limit | No | Max results (default: 50). | |
| framework | No | Framework filter (case-insensitive). Examples: "SwiftUI", "ARKit", "CoreML". Note: Some samples are under generic categories - use searchQuery for better results. | |
| searchQuery | No | Search keywords. Most effective approach. Examples: "animation", "camera", "machine learning", "widgets". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true. Description does not contradict and adds context about browsing full sample projects, reinforcing read-only nature. No extra behavioral details needed beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two informative sentences with a third differentiating from sibling. Front-loaded with purpose, no redundant words. Highly concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description mentions 'full working examples' which implies the result type. Lacks details on pagination or ordering, but sufficient for a browsing tool given annotations and schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description provides examples for 'framework' and 'searchQuery' but these are already in the parameter descriptions. No additional semantic meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Browse complete sample projects from Apple' with 'Full working examples' specifying it returns complete projects, not snippets. It explicitly distinguishes from sibling 'search_apple_docs' which returns code snippets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'Use for learning by example', giving clear usage intent. Also contrasts with sibling tool, providing guidance on when to use this vs alternatives. No explicit exclusions, but adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_technology_overviewsARead-only
Access comprehensive guides and tutorials for Apple technologies. Includes getting started guides, architectural overviews, best practices, and implementation patterns. Perfect for learning new frameworks or understanding Apple's recommended approaches.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 50). Includes subcategories when enabled. | |
| category | No | Topic category. Popular: "app-design-and-ui", "games", "ai-machine-learning", "augmented-reality", "privacy-and-security". Leave empty to browse all. | |
| platform | No | Target platform. "all" for cross-platform content. Default: "all" | |
| searchQuery | No | Search terms. Try: "getting started", "best practices", "architecture", "performance". | |
| includeSubcategories | No | Include nested topics for comprehensive results. Set false for overview only. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds content-level detail (guides, tutorials) but does not disclose any additional behavioral traits such as rate limits, auth requirements, or pagination behavior. With annotations present, the bar is lower, but no extra behavioral insight is provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the key verb and resource, and every sentence adds value. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description does not detail return values, but it conveys the type of content returned (guides, tutorials, best practices). With 5 well-documented parameters and a clear purpose, the description is fairly complete for a read-only overview tool, though more detail on result structure could help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description. The tool description does not add any new semantics to the parameters; it only describes the overall content. Per guidelines, baseline 3 is appropriate when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'access' and the resource 'comprehensive guides and tutorials for Apple technologies'. It specifies the content types (getting started guides, architectural overviews, best practices, implementation patterns) and use case (learning new frameworks, understanding recommended approaches), distinguishing it from sibling tools like get_apple_doc_content or browse_wwdc_topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Perfect for learning new frameworks or understanding Apple's recommended approaches'. However, it does not explicitly state when not to use this tool or how it compares to alternatives like get_apple_doc_content or search_apple_docs, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wwdc_code_examplesARead-only
Browse all code examples from WWDC sessions. Perfect for finding implementation patterns, seeing new API usage, or learning by example. Each result includes the code and its session context.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | WWDC year filter ("2026", "2025", etc.). | |
| limit | No | Max examples (default: 30). Each includes code and source video info. | |
| topic | No | Topic ID or concept keyword. Can use exact topic IDs ("swiftui-ui-frameworks", "machine-learning-ai", etc.) for precise filtering, or general keywords like "animation", "performance", "concurrency" for broader search. | |
| language | No | Programming language: "swift", "objc", "javascript", "metal". | |
| framework | No | Framework to find examples for. Examples: "SwiftUI", "SwiftData", "RealityKit". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description adds that each result includes the code and its session context, which is useful return-shape context. It does not mention pagination, result caps beyond the limit param, or auth, so it adds modest value over the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core purpose front-loaded and no filler. The 'Perfect for...' clause is mildly promotional but still earns its place by naming use cases. Overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only browse tool with no output schema, the description covers what it does, what results contain (code + session context), and schema fully documents filtering. What's missing is disambiguation from sibling code-search tools, but nothing critical for correct invocation is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (year, limit, topic, language, framework) are already documented in the schema, including the exact topic-ID examples and language values. The description adds nothing parameter-specific, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Browse all code examples from WWDC sessions.' This is clear enough that an agent knows what it returns (code examples tied to WWDC). It does not, however, distinguish itself from close siblings like get_sample_code or get_apple_design_examples, which likely also return code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Perfect for finding implementation patterns, seeing new API usage, or learning by example' implies when to use it, but gives no explicit when-not or alternative routing among the many sibling search/browse tools. The usage context is real but soft, so 3 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wwdc_videoARead-only
Access complete WWDC session content including full transcript, code examples, and resources. Use after finding videos with list_wwdc_videos or search_wwdc_content. Provides offline access to entire session content.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | WWDC year. Example: "2026" | |
| videoId | Yes | Session ID. Example: "10101" for keynote, "238" for session 238. | |
| includeCode | No | Include all code examples from the session. Default: true | |
| includeTranscript | No | Include full session transcript with timestamps. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds the useful note that the result is a self-contained, offline-usable dump of session content, but it says nothing about payload size, rate limits, or whether missing years/IDs fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the what and followed by the when. Slight redundancy between 'complete WWDC session content' and 'entire session content', but nothing wasteful enough to hurt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the right job of naming what comes back, and all four parameters are covered by the schema. Reasonably complete for a straightforward retrieval tool, though it could note failure modes for invalid year/videoId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so year, videoId, includeCode, and includeTranscript are all documented in the schema with examples and defaults. The description's mention of transcript/code mirrors those toggles without adding syntax or default behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Access complete WWDC session content') and enumerates what is returned (full transcript, code examples, resources), which clearly separates it from the search/list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent in a workflow: 'Use after finding videos with list_wwdc_videos or search_wwdc_content.' It names the two feeder tools but gives no when-not condition or signal that the other WWDC tools are alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_apple_design_resourcesBRead-only
List Apple Design Resources catalog entries with stable resource IDs, categories, platforms, formats, notes, preview image URLs, and download URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of resources. Default: 50. | |
| format | No | Optional format filter such as "figma", "sketch", "dmg", "zip", or "pdf". | |
| category | No | Optional category filter such as "Design templates", "Fonts", "Tools", or "Product bezels". | |
| platform | No | Optional platform or subsection filter such as "iOS", "macOS", or "visionOS". | |
| searchQuery | No | Optional search query for titles, labels, notes, and categories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so safety is covered. The description adds useful return-shape context (stable resource IDs, categories, platforms, formats, notes, preview and download URLs), which matters because there is no output schema, but it says nothing about pagination behavior or how the limit interacts with total results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no preamble or filler. The field enumeration is somewhat long but earns its place given the absence of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by naming the returned fields, and the filter set is fully documented in the schema. It falls short of complete only in omitting default/pagination behavior and any routing guidance relative to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five filters (limit, format, category, platform, searchQuery) are already documented with examples in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('Apple Design Resources catalog entries'), and enumerates the fields returned. It is clear what the tool does, but it does not differentiate itself from siblings like search_apple_design_docs or get_apple_design_content, which an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The description never explains how this catalog listing differs from search_apple_design_docs or get_apple_design_content, nor when an agent should prefer a filtered listing over a search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_technologiesARead-only
Browse all Apple technologies and frameworks by category. Essential for discovering available frameworks and understanding Apple's technology ecosystem. Use this when: exploring what's available, finding framework identifiers for search_framework_symbols, checking beta status.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results per category. Useful for quick overviews. Default: 200 | |
| category | No | Filter by category (case-sensitive). Popular: "App frameworks" (SwiftUI, UIKit), "Graphics and games" (Metal, SpriteKit), "App services" (CloudKit, StoreKit), "Media" (AVFoundation), "System" (Foundation). Leave empty to see all categories. | |
| language | No | Filter by language support. "swift" for Swift-compatible frameworks, "occ" for Objective-C. Leave empty for all. | |
| includeBeta | No | Include beta/preview technologies. Set to false to see only stable frameworks. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the bar is lower. The description adds behavioral context like browsing by category, discovering frameworks, and checking beta status, which are helpful but not extensive. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only 4 sentences, front-loaded with the main action, and efficiently covers value and usage cases. Every sentence adds information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no output schema. The description explains purpose and usage well but could briefly mention the response format (e.g., list of technology names/identifiers). Still, it is largely complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by mentioning case-sensitivity for category, providing popular examples, and linking parameter use to real tasks (e.g., checking beta status). This goes beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool browses Apple technologies by category, using specific verbs like 'browse' and 'discover'. It distinguishes itself from siblings by mentioning the use case of finding framework identifiers for search_framework_symbols, providing a clear resource and differentiator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use the tool: exploring available frameworks, finding identifiers, and checking beta status. It references search_framework_symbols as a sibling, providing an alternative. However, it lacks explicit when-not-to-use guidance beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_wwdc_videosBRead-only
Browse WWDC session videos with full offline access to transcripts and code. Shows all available sessions with filtering options. Use this to discover WWDC content, find sessions by topic, or identify videos with code examples.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | WWDC year ("2026", "2025", etc.) or "all". Available: 2014-2026. Example: "2026" for latest. | |
| limit | No | Max videos to show (default: 50). Videos include title, duration, and content indicators. | |
| topic | No | Topic ID for exact filtering or keyword for title search. Available topic IDs: "accessibility-inclusion", "app-services", "app-store-distribution-marketing", "audio-video", "business-education", "design", "developer-tools", "essentials", "graphics-games", "health-fitness", "machine-learning-ai", "maps-location", "photos-camera", "privacy-security", "safari-web", "spatial-computing", "swift", "swiftui-ui-frameworks", "system-services". Use exact ID for topic filtering, or any keyword to search in video titles. | |
| hasCode | No | Filter by code availability. true = sessions with code, false = without code. Leave empty for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read. The description does add that transcripts and code are available for 'full offline access', which is useful behavior beyond the annotation. It says nothing about pagination or result ordering, so the added value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with the core verb front-loaded, but 'Shows all available sessions with filtering options' largely restates the opening sentence, and the 'full offline access to transcripts and code' phrase is promotional padding rather than call-relevant guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and full schema coverage on inputs, the description covers the essentials: discoverability purpose, filtering, and the ability to find videos with code examples. It stops short of stating return shape (title/duration/indicators, which live only in the limit param description) but is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: year, limit, topic, and hasCode are each fully documented with examples and the topic ID enumeration. The description only refers to 'filtering options' generically and contributes no syntax or semantics beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: browse/list WWDC session videos with filtering. Distinguishes it from search-oriented siblings (search_wwdc_content, search_apple_docs) by framing it as a browse-all listing. However, it never names those siblings, leaving the browse-vs-search distinction implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three implied use cases (discover content, find sessions by topic, identify videos with code), which is clear context for when to reach for it. But it names no alternatives and no exclusions, so the agent must infer why to use this over search_wwdc_content or get_wwdc_video.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_wwdc_yearsARead-only
List all available WWDC years with video counts and statistics. Shows which years have content available and how many videos each year contains.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description adds value by specifying the output includes video counts and statistics. No contradiction, and no hidden behaviors need disclosure for such a simple read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the main purpose. Every sentence is informative and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description adequately covers the return shape (years, video counts, statistics) for a simple list tool with no output schema. The term 'statistics' is vague but acceptable given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the description adds meaning by explaining what data the tool returns (video counts and statistics), going beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'list', the resource 'WWDC years', and the data returned (video counts and statistics). It distinguishes from sibling tools like list_wwdc_videos which lists individual videos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like browse_wwdc_topics or list_wwdc_videos. The description implies it's for an overview of years, but lacks when-not or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_references_batchARead-only
Deep dive into all types and APIs referenced in a documentation page. Resolves all mentioned types, methods, and properties to understand dependencies. Use when: analyzing complex APIs, understanding type requirements, exploring API ecosystems.
| Name | Required | Description | Default |
|---|---|---|---|
| sourceUrl | Yes | Documentation URL to analyze for references. Example: "https://developer.apple.com/documentation/swiftui/view" | |
| filterByType | No | Filter by reference type. Use "protocol" for protocol requirements, "class" for class hierarchies. Default: "all" | |
| maxReferences | No | Limit resolved references (default: 20, max: 50). Higher values = more comprehensive but slower. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare 'readOnlyHint: true', indicating a safe read operation. The description adds that the tool 'resolves all mentioned types', but does not elaborate on performance, scope limits, or other behavioral traits beyond what annotations provide. It does not contradict annotations, but adds minimal extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three clear sentences: the action, details, and usage guidance. It is front-loaded with the core purpose and contains no redundant elements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, yet the description does not explain what the result looks like (e.g., list of references, structure, or metadata). For a tool that resolves references from a documentation page, this is a significant gap. The description would benefit from outlining the return format or behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the input schema already provides detailed descriptions for all three parameters (e.g., sourceUrl example, maxReferences bounds, filterByType enum). The description does not add any parameter semantics beyond the schema. Per guidelines, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Deep dive into all types and APIs referenced in a documentation page. Resolves all mentioned types, methods, and properties.' It uses a specific verb-resource combination and outlines concrete use cases, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use scenarios ('Use when: analyzing complex APIs, understanding type requirements, exploring API ecosystems'). However, it does not mention when not to use this tool or compare it to sibling tools (e.g., get_related_apis), which slightly limits guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_apple_design_docsARead-only
Search Apple Design pages, Human Interface Guidelines JSON, and Design Resources catalog entries. Use this for HIG guidance, design resources, templates, fonts, product bezels, and Apple Design overview pages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results. Default: 20. | |
| query | Yes | Search query for Apple Design or HIG content. Examples: "layout", "iOS templates", "SF Pro", "visionOS". | |
| platform | No | Platform filter such as iOS, iPadOS, macOS, watchOS, tvOS, or visionOS. Default: "all". | |
| contentType | No | Content filter. Use "hig" for Human Interface Guidelines, "resource" for Design Resources, "page" for Apple Design HTML pages. Default: "all". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds which corpora are searched (behavioral context), but says nothing about pagination, ranking, or result limits, which matters for a search tool whose behavior the agent must predict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the resource scope front-loaded before the usage list. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with fully documented parameters and no output schema, nothing necessary for correct invocation is missing. The only omission, sibling routing, is a minor nice-to-have rather than a blocking gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, limit, platform, and contentType are all documented in the schema with examples and defaults. The description repeats the content categories but adds no format or syntax guidance beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and three concrete resources (Apple Design pages, HIG JSON, Design Resources catalog entries). It is clear what the tool does, though it never names the obvious sibling search_apple_docs to draw the boundary between design-specific and general Apple doc search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a solid when-to-use list (HIG guidance, design resources, templates, fonts, product bezels, overview pages). It lacks any explicit when-not-to-use or a pointer to search_apple_docs for non-design content, so the routing against siblings remains inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_apple_docsARead-only
Search Apple Developer Documentation for APIs, frameworks, guides, and samples. Best for finding specific APIs, classes, or methods. Latency: typically 5-25 seconds (median about 10) because Apple streams the full result set; repeated identical queries are cached for 10 minutes. For browsing sample code projects, use get_sample_code. For WWDC videos, use the dedicated WWDC tools (list_wwdc_videos, search_wwdc_content).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type of content to filter. Use "all" for comprehensive results, "documentation" for API references/guides, "sample" for code snippets. Note: "sample" returns individual code examples, not full projects. For complete sample projects, use get_sample_code instead. Default: "all". | |
| query | Yes | Search query for Apple Developer Documentation. Tips: Use specific API names (e.g., "UIViewController"), framework names (e.g., "SwiftUI"), or technical terms. Avoid generic terms like "how to" or "tutorial". Examples: "NSPredicate", "SwiftUI List", "Core Data migration", "URLSession authentication". | |
| select | No | Jev semantic selection: score the results against the query and return only the best 1-5, each with a relevance score. Default: on when APPLE_DOCS_MCP_JEV_RERANK=1 is set, otherwise off. select: true while it is not enabled is an error. Adds a Jev provider call (up to about 15 s). | |
| maxResults | No | With select on: the most results to return (1-5, default 5). Ignored with select off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint, so the description carries most of the burden and does well: it discloses expected latency (5-25s, median ~10), the reason (Apple streams full result set), and a 10-minute cache for identical queries. It omits any auth or failure-mode behavior, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, zero filler: purpose first, usage guidance second, then performance/caching caveat, then sibling routing. Each sentence carries distinct decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, alternatives, latency, and caching for a search tool with no output schema and fully documented parameters. The only gap is a brief note on what results look like or how to page beyond maxResults, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query tips, the type enum, select semantics, and maxResults interaction. The description adds no per-parameter detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) plus resource (Apple Developer Documentation) and the content classes covered (APIs, frameworks, guides, samples). It explicitly differentiates from siblings by naming get_sample_code and the WWDC tools as separate routes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('Best for finding specific APIs, classes, or methods') and then routes two other intents away: sample projects to get_sample_code, WWDC videos to list_wwdc_videos/search_wwdc_content. When-to-use and when-not-to-use are both present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_framework_symbolsARead-only
Browse and search symbols within a specific Apple framework. Perfect for exploring framework APIs, finding all views/controllers/delegates in a framework, or discovering available types. Use after list_technologies to get framework identifiers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results limit (default: 50, max: 200). Includes nested symbols. | |
| language | No | Language preference. Some APIs differ between Swift and Objective-C. Default: "swift" | |
| framework | Yes | Framework identifier in lowercase. Common: "uikit", "swiftui", "foundation", "combine", "coredata". Get exact names from list_technologies. Example: "swiftui" for SwiftUI framework. | |
| symbolType | No | Filter by symbol type. Use "class" for UIViewController subclasses, "protocol" for delegates, "struct" for value types. Default: "all" shows everything. | |
| namePattern | No | Filter by name pattern. Use "*View" for all views, "UI*" for UI-prefixed symbols, "*Delegate" for delegates. Case-sensitive. Leave empty for all symbols. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true which is consistent. The description adds no extra behavioral traits such as auth needs, rate limits, or output format. It sufficiently describes the read operation but no additional transparency beyond the purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero wasted words. Front-loaded with verb and resource, followed by use cases and prerequisite. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description is sufficient for a search tool: it tells what it does, when to use it, and hints at output (list of symbols). Missing explicit return type but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with detailed parameter descriptions. The tool description only adds context like 'Get exact names from list_technologies' which is helpful but minimal. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it browses and searches symbols within a specific Apple framework, uses specific verbs and resource, and distinguishes from siblings by prescribing use after list_technologies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends using after list_technologies and provides example use cases ('exploring framework APIs, finding all views/controllers/delegates'). It lacks direct exclusions but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_wwdc_contentARead-only
Full-text search across all WWDC video transcripts and code examples. Find specific discussions, API mentions, or implementation examples. More powerful than list_wwdc_videos for finding specific content.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Limit to specific year ("2026", "2025", etc.). Leave empty for all years. | |
| limit | No | Max results (1-100, default 20) with select off. With select on, limit is the recall width: that many videos (ranked by match count, up to 256) are scored by Jev. When limit is omitted with select on, every candidate up to 256 is scored; maxResults is how many are returned. | |
| query | Yes | Search terms. Examples: "async await", "@Observable", "Vision Pro", "performance optimization". | |
| select | No | Jev semantic selection: score the candidate videos against the query and return only the best 1-5, each with a relevance score. Without limit it scores every candidate (up to 256). Default: on when APPLE_DOCS_MCP_JEV_RERANK=1 is set, otherwise off. select: true while it is not enabled is an error. Adds a Jev provider call (up to about 15 s). | |
| language | No | Code language filter ("swift", "objc", "javascript"). Only for code search. | |
| searchIn | No | Search scope. "transcript" = spoken content, "code" = code examples only, "both" = everything. Default: "both" | |
| maxResults | No | With select on: the most videos to return (1-5, default 5); limit is the recall width. Ignored with select off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered and the bar is lower. The description adds only the breadth of the corpus being searched; it does not surface the costly Jev rerank path or result volume, though that detail does live in the select/limit schema entries. Adequate but thin beyond what structured fields provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all front-loaded: capability, use cases, then sibling differentiation. No filler and nothing an agent needs is buried at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read-only search tool with a fully documented schema, the description covers capability, scope and differentiation adequately, and no output schema exists so return-format explanation is not owed. It would be a 5 with any note on result ordering or pagination expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter docs are unusually detailed (limit vs maxResults vs select interaction, year format, enum values), so the schema carries the full semantic load. The description adds nothing parameter-specific, which is the correct baseline when the schema is this complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (full-text search) plus resource scope (WWDC video transcripts and code examples) and enumerates the concrete intents it serves: discussions, API mentions, implementation examples. It also names the sibling it supersedes, list_wwdc_videos, so an agent can disambiguate without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent away from list_wwdc_videos when looking for specific content, which is real when-to-use guidance. It stops short of exclusions (e.g. use get_wwdc_video when you already have an ID) and says nothing about when a narrower tool like get_wwdc_code_examples would be preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
23 tool updates
v2.1.1- First observed
browse_wwdc_topics - First observed
download_apple_design_resource - First observed
find_related_wwdc_videos - First observed
find_similar_apis - First observed
get_apple_design_content - First observed
get_apple_design_examples - First observed
get_apple_doc_content - First observed
get_documentation_updates - First observed
get_platform_compatibility - First observed
get_related_apis - First observed
get_sample_code - First observed
get_technology_overviews - First observed
get_wwdc_code_examples - First observed
get_wwdc_video - First observed
list_apple_design_resources - First observed
list_technologies - First observed
list_wwdc_videos - First observed
list_wwdc_years - First observed
resolve_references_batch - First observed
search_apple_design_docs - First observed
search_apple_docs - First observed
search_framework_symbols - First observed
search_wwdc_content
TDQS
Scored across 23 tools
Most tools target distinct resources or actions, and domain separation (Apple Design, Developer Docs, API exploration, WWDC, samples) is clear. However, get_related_apis and find_similar_apis have overlapping purposes around discovering related APIs, which could cause confusion. A few pairs (e.g., get_wwdc_video and get_wwdc_code_examples) also have partial overlap.
All names use snake_case and follow a verb_noun pattern, which is highly consistent. Minor deviations include the selective 'apple' prefix (e.g., get_apple_doc_content vs. get_technology_overviews) and the extra '_batch' suffix in resolve_references_batch, but overall the convention is strongly predictable.
With 23 tools, the set is on the heavy side for a single MCP server, falling into the borderline range. While the breadth of domains (design, docs, APIs, WWDC) justifies many tools, some consolidation might improve usability and reduce cognitive load.
The surface covers core workflows: searching and retrieving docs, exploring APIs, accessing design resources, and browsing WWDC content including transcripts and code. Minor gaps exist, such as direct tools for release notes or cross-domain search, but agents can work around these with existing tools.
Maintenance
Related MCP Connectors
Apple Developer Documentation with Semantic Search, RAG, and AI reranking for MCP clients
Get up-to-date, version-specific documentation and code examples from official sources directly in…
The documentation, as a tool your agent can call: 950+ AI-dev guides. Search + fetch tools.
Search and read Rust documentation for the standard library and any crate on crates.io
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceProvides AI agents with instant access to official Apple developer documentation, Swift programming guides, design guidelines, and Apple Developer YouTube content including WWDC sessions. Uses advanced RAG technology with semantic search and AI reranking to deliver accurate, contextual answers for Apple platform development.7-
- AlicenseBqualityFmaintenanceProvides AI assistants with access to Apple's Human Interface Guidelines and technical API documentation across all Apple platforms (iOS, macOS, watchOS, tvOS, visionOS), enabling unified search of design principles and implementation details.3137 npm21MIT
- AlicenseAqualityDmaintenanceProvides access to Apple's official developer documentation, frameworks, APIs, and WWDC session transcripts across all Apple platforms. It enables AI assistants to search technical guides, sample code, and platform compatibility information using natural language queries.18874 npm1,380MIT
- AlicenseNot gradedqualityBmaintenanceProvides access to Apple documentation and WWDC transcripts with semantic, keyword, and hybrid search capabilities, enabling developers to quickly find relevant code examples and technical information.119MIT