Skip to main content
Glama

WWDC MCP — current Apple developer knowledge for coding agents

Ground Codex, Claude, Cursor, VS Code, Windsurf, Zed, and other MCP clients in Apple source material before they change your Swift code.

WWDC MCP indexes WWDC20–WWDC26 sessions, Apple Developer Documentation, tutorials, Human Interface Guidelines, Swift Evolution, The Swift Programming Language, and App Store Review Guidelines into a local SQLite search layer. It exposes 45 read-only MCP tools for search, API history, deprecations, transcripts, source-grounded app audits, and trust metadata.

CI License: MIT Node MCP MCP Registry

Unofficial community project. Not affiliated with or endorsed by Apple. Apple content remains subject to Apple's terms and source-site availability.

Pick your path

I just want my coding agent to use Apple knowledge

  1. Install/connect WWDC MCP using the MCP Registry/MCPB release or the client config below.

  2. Ask: “Use WWDC MCP to audit this app against current Apple guidance before changing code.”

  3. Let the agent start with swift_app_audit; you do not need to learn all 45 tools.

I am a power user

Use the focused tools directly for transcripts, API history, HIG, Swift Evolution, App Review, source freshness, and trust metadata. See Agent Guide for recommended tool chains and prompt recipes.

I am an agent working in this repository

Read AGENTS.md first. Client-specific repository instructions are also provided for Cursor and GitHub Copilot.

Related MCP server: Apple RAG MCP

Why use it?

Coding agents are excellent at writing Swift, but Apple APIs, platform guidance, App Review rules, and WWDC recommendations change quickly. WWDC MCP gives an agent a source-grounded way to answer questions like:

  • “What changed in SwiftUI at WWDC26, and which changes matter to this app?”

  • “Audit this StoreKit subscription flow against current Apple guidance.”

  • “When was this API introduced, is it deprecated, and what replaces it?”

  • “Find the exact WWDC chapter that explains this App Intents behavior.”

  • “Compare WWDC25 and WWDC26 coverage of Foundation Models.”

  • “Check App Store Review Guideline 3.1.1 before I ship.”

  • “Audit this macOS app for current SwiftUI, AppKit, concurrency, accessibility, and App Store guidance.”

The promoted entry point for repo-level Apple work is swift_app_audit. The promoted trust entry point is wwdc_security_manifest.

Start here: three high-value workflows

You do not need to learn 45 tool names first. Start with the job you are trying to finish:

  • Modernize an Apple app: call swift_app_audit with the repo's actual feature/API/problem, then follow its evidence into the focused WWDC, HIG, documentation, and API tools.

  • Answer “what changed?”: use wwdc_what_changed or wwdc_search with a framework/API and a year range, then open the strongest session/transcript evidence.

  • Check shipping risk: search appstore_guidelines_search, API availability/deprecation tools, and wwdc_ingest_status before treating a recommendation as current.

The server instructions teach connected agents this routing automatically; the catalog remains available when you need a narrower source.

What makes this different?

  • WWDC26-aware — the default ingest range is 2020–2026 and can be extended with --year.

  • Source-grounded app audits — swift_app_audit combines WWDC, HIG, tutorials, Swift Evolution, pathways, Apple doc hints, caveats, and validation steps.

  • API intelligence — availability, deprecation, replacement, introduction history, and WWDC mentions.

  • Transcript-native — search complete session transcripts, read them in chunks, and generate timestamped deep links.

  • Local-first — SQLite + FTS5 plus optional local ONNX semantic reranking; no separate embedding service or paid API is required for core search.

  • Trust-aware — conservative judgment metadata, a content-safety tripwire, and a security manifest help agents distinguish evidence from instructions.

  • Two transports — stdio by default, plus authenticated stateless Streamable HTTP for remote/self-hosted use.

  • Public-directory ready transport — remote deployments can explicitly set WWDC_MCP_PUBLIC_READ_ONLY=1 to allow anonymous access to the same read-only tool surface; without that flag or bearer auth, HTTP fails closed.

  • Read-only MCP surface — the 45 tools retrieve and analyze source material; they do not mutate your Apple account or source repo.

Install-path scorecard

Choose the path that matches what you value. Do not confuse “local-first” with “everyone must self-host.”

Path

User work

Best for

Status

Hosted remote MCP

paste/connect one HTTPS MCP URL

ChatGPT, cloud/remote agents, fastest evaluation

endpoint prepared; not advertised live until verification passes

MCPB / MCP Registry

install published bundle

clients with bundle/Registry support

v0.2.1 active

Local stdio

clone/package + ingest + local client config

privacy, offline-ish retrieval, full local control

supported and tested

Self-hosted HTTP

deploy + choose auth + TLS/edge

teams controlling their own infrastructure

supported and tested

When the hosted endpoint is live, the intended public URL is:

https://wwdc-mcp.smatdesigns.com/mcp

For ChatGPT/custom remote MCP clients, that removes the local Node/index/config-path requirement. For Cursor, the same remote URL can be placed in mcp.json and can later back a one-click install/deeplink. Local stdio remains a first-class option rather than a fallback.

Friction budget

A newcomer should be able to reach the first source-grounded answer with as few decisions as possible:

  • hosted: connect URL → ask the 60-second check;

  • Registry/MCPB: install → ask the 60-second check;

  • local: install → ingest → configure → ask the 60-second check.

If a new distribution method adds steps before the first useful answer, treat that as an adoption regression unless it buys a clear privacy/security capability.

Local-first quick start

Use this path when you want the corpus and server on your own machine. For hosted/Registry paths, use the scorecard above.

Requirements

  • Node.js 22.14 or newer

  • npm

Distribution status (October 7, 2026): the official MCP Registry namespace is io.github.jabbertones-cloud/wwdc, distributed through a GitHub-hosted MCPB release asset. v0.2.1 is the current patch line. npm publication is optional secondary distribution and is not required for Registry or Cursor installs.

1. Clone and build

git clone https://github.com/jabbertones-cloud/wwdc-mcp-server.git
cd wwdc-mcp-server
npm ci
npm run build

The release package exposes two executables:

wwdc-mcp-server   # stdio MCP server
wwdc-mcp-ingest   # build/update the local Apple knowledge index

Run the immutable GitHub release package directly:

PKG="https://github.com/jabbertones-cloud/wwdc-mcp-server/releases/download/v0.2.1/wwdc-mcp-server-0.2.1.tgz"

npm exec --yes --allow-remote=all --package="$PKG" -- wwdc-mcp-ingest --source wwdc --year 2026
npm exec --yes --allow-remote=all --package="$PKG" -- wwdc-mcp-server

Clients that support MCP Bundles can use the WWDC-MCP-v0.2.1.mcpb asset from the GitHub v0.2.1 release / official MCP Registry.

2. Build a useful local index

For the full core corpus:

npm run ingest:all

For a faster WWDC26-first setup:

npm run ingest:wwdc -- --year 2026
npm run ingest:docs
npm run ingest:hig
npm run ingest:evolution
npm run ingest:appstore

ingest:all covers the core sources: WWDC, tutorials, pathways, HIG, Swift Evolution, Apple docs, Swift Book, and App Store Review Guidelines. Additional optional enrichment sources are documented below.

3. Prove it works before wiring your client

npm test

That exercises parser/security checks, all 45 tools over stdio, search regressions, package metadata, and authenticated Streamable HTTP.

4. Add it to an MCP client

Generic stdio configuration:

{
  "mcpServers": {
    "wwdc": {
      "command": "node",
      "args": ["/absolute/path/to/wwdc-mcp-server/dist/index.js"]
    }
  }
}

Then ask your agent:

Use WWDC MCP to audit this app against current Apple guidance before changing code.

Make your agent use it automatically

The highest-leverage setup is a short repository instruction so the agent reaches for WWDC MCP without being reminded every prompt:

For Apple-platform work, use WWDC MCP before material code changes.
Start with swift_app_audit for repo-level work, verify API availability/deprecation,
cite the strongest Apple/Swift source evidence, and separate evidence from inference.

Ready-made versions are included in AGENTS.md, Cursor rules, and GitHub Copilot instructions.

60-second connection check

After connecting the server, ask your client to:

Use WWDC MCP. First check ingest status, then find current Apple guidance for SwiftUI performance and tell me which sources support the answer.

A healthy setup should be able to see the wwdc server, call its tools, and return source-grounded results. For repository-level work, follow with:

Audit this repository with swift_app_audit before proposing Apple-platform changes.

Remote HTTP deployment modes

The HTTP transport is deliberately fail-closed by default.

Private/self-hosted bearer mode:

WWDC_MCP_HTTP_HOST=0.0.0.0 \
WWDC_MCP_BEARER_TOKEN='<secret>' \
npm run start:http

Explicit anonymous read-only mode for a public MCP directory/connector:

WWDC_MCP_HTTP_HOST=0.0.0.0 \
WWDC_MCP_PUBLIC_READ_ONLY=1 \
npm run start:http

In public mode, the MCP endpoint exposes the existing 45 read-only tools without requiring a shared bearer token. This mode is opt-in. If neither bearer authentication nor WWDC_MCP_PUBLIC_READ_ONLY=1 is configured, /mcp returns 503 auth_not_configured.

For an internet-facing deployment, put the server behind TLS/reverse-proxy controls, keep the corpus/source policy unchanged, and monitor/rate-limit at the edge. The repo does not claim a hosted public endpoint until one is independently deployed and verified.

Client setup

Codex CLI and the Codex IDE extension share MCP configuration. Add this to ~/.codex/config.toml:

[mcp_servers.wwdc]
command = "node"
args = ["/absolute/path/to/wwdc-mcp-server/dist/index.js"]

Verify the server appears with:

codex mcp list

For reliable tool selection, add a project rule such as this to AGENTS.md:

Use WWDC MCP before Apple-platform code changes. Start with swift_app_audit for repo-level work, use Apple/WWDC source tools for evidence, and distinguish retrieved source text from inference.

~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "wwdc": {
      "command": "node",
      "args": ["/absolute/path/to/wwdc-mcp-server/dist/index.js"]
    }
  }
}

Use your normal MCP configuration flow and point the server command at:

node /absolute/path/to/wwdc-mcp-server/dist/index.js

.vscode/mcp.json:

{
  "servers": {
    "wwdc": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/wwdc-mcp-server/dist/index.js"]
    }
  }
}

~/.cursor/mcp.json:

{
  "mcpServers": {
    "wwdc": {
      "command": "node",
      "args": ["/absolute/path/to/wwdc-mcp-server/dist/index.js"]
    }
  }
}

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "wwdc": {
      "command": "node",
      "args": ["/absolute/path/to/wwdc-mcp-server/dist/index.js"]
    }
  }
}

.zed/settings.json:

{
  "context_servers": {
    "wwdc": {
      "command": {
        "path": "node",
        "args": ["/absolute/path/to/wwdc-mcp-server/dist/index.js"]
      }
    }
  }
}

Documentation map

If you are…

Read

Installing for the first time

this README → Quick start → Client setup

Driving a coding agent

Agent Guide

Understanding design/trust boundaries

Architecture

Diagnosing a failure

Troubleshooting

Checking clients/runtimes/transports

Compatibility

An agent modifying this repo

AGENTS.md

Self-hosting / deploying HTTP

Deployment guide

Contributing code or sources

CONTRIBUTING.md

Contributing with an AI coding agent

AI-assisted contributions

Reviewing trust/security

SECURITY.md

Publishing a release

Release guide

Apple sources

The core index can include:

Source

What you get

WWDC 2020–2026

Sessions, descriptions, topics, platforms, speakers, transcripts, chapters, sample-code links, related docs

Apple Developer Documentation

Framework and symbol documentation from public DocC data

Apple tutorials

Public DocC tutorial content

Human Interface Guidelines

Platform design guidance

Swift Evolution

Proposal status, authors, versions, implementation links, and full proposal text

The Swift Programming Language

Swift language reference chapters

App Store Review Guidelines

Searchable guideline sections

Optional enrichment

Apple release notes, Swift Forums, Apple Developer Forums, generated summaries, cross-reference graph

Most query tools read from the local SQLite index. apple_doc_lookup is intentionally a live Apple Developer Documentation lookup and therefore uses the network.

45 read-only MCP tools

Search and discovery

  • wwdc_search, apple_search_all

  • wwdc_list_years, wwdc_list_topics, wwdc_list_sessions

  • wwdc_topics_by_year, wwdc_speaker_search, wwdc_what_changed

  • wwdc_list_pathways, wwdc_get_pathway

Sessions, transcripts, and sample code

  • wwdc_get_session, wwdc_session_summary, wwdc_related_sessions

  • wwdc_transcript_search, wwdc_session_transcript_full

  • wwdc_session_deep_link

  • wwdc_list_session_code, wwdc_sample_code_list, wwdc_sample_code_grep

Apple docs, HIG, Swift, and forums

  • apple_doc_lookup, apple_doc_get, apple_doc_list_framework

  • apple_tutorial_get

  • apple_hig_search, apple_hig_list

  • apple_swift_book_get

  • apple_swift_evolution_get, apple_swift_evolution_list, apple_swift_evolution_filter

  • swift_forum_search, apple_forum_search

API and App Store intelligence

  • wwdc_find_api_introduction, wwdc_sessions_for_api

  • apple_api_availability, apple_api_deprecation, apple_what_replaced

  • apple_release_notes_search

  • appstore_guidelines_search, appstore_guideline_get

Audit, graph, status, and trust

  • swift_app_audit

  • apple_swift_pattern_find, apple_cross_references

  • wwdc_ingest_status, wwdc_export_status

  • wwdc_security_manifest

The test suite asserts that both stdio and Streamable HTTP expose exactly 45 tools.

Search example

wwdc_search supports year ranges, topics, platforms, transcript requirements, output detail, and conservative judgment metadata.

{
  "query": "SwiftUI performance",
  "kinds": ["session"],
  "year_min": 2025,
  "year_max": 2026,
  "topics": ["SwiftUI"],
  "require_transcript": true,
  "judgment": true,
  "detail": "detailed"
}

Platform-only queries such as “macOS” intentionally receive conservative judgment. Better audit queries name a framework, API, feature, symptom, or goal.

Ingest

Core sources

npm run ingest:wwdc
npm run ingest:tutorials
npm run ingest:hig
npm run ingest:evolution
npm run ingest:docs
npm run ingest:swiftbook
npm run ingest:appstore
npm run ingest:all

Restrict WWDC years by repeating --year:

npm run ingest:wwdc -- --year 2025 --year 2026

Optional enrichment

npm run ingest -- --source release-notes
npm run ingest -- --source swift-forums
npm run ingest -- --source apple-dev-forums
npm run ingest -- --source session-summaries --limit 50
npm run ingest -- --source cross-reference
npm run ingest -- --source deprecation-backfill
npm run ingest -- --source export-deprecation-qa

session-summaries is the one optional enrichment lane that uses an external model API. It runs only when ANTHROPIC_API_KEY is set, sends bounded WWDC session metadata/transcript excerpts to Anthropic, and may incur API cost. Core ingest, search, audits, and local semantic reranking do not require that key.

During WWDC week, re-run the WWDC ingest periodically to pick up newly published sessions.

Local semantic search — no Ollama required

FTS5 keyword search works immediately. When semantic reranking is enabled, WWDC MCP lazily loads nomic-ai/nomic-embed-text-v1.5 through @huggingface/transformers and runs the ONNX model locally. The model is cached under ~/.cache/huggingface/hub; the first semantic use may need network access to download model files.

If the model cannot initialize, search falls back to FTS5 for that process. To force keyword-only behavior:

export WWDC_SKIP_EMBEDDINGS=1

Local/index configuration

Variable

Default

Purpose

WWDC_MCP_DATA_DIR

OS app-data directory

Database/cache directory

WWDC_MCP_DB

<data-dir>/wwdc.db

SQLite database path

WWDC_SKIP_EMBEDDINGS

unset

Set to 1 to disable local model loading and semantic reranking

WWDC_DOCS_MAX_PAGES

2500

Bound Apple Developer Documentation crawl size

WWDC_TUTORIAL_MAX_PAGES

250

Bound Apple tutorial crawl size

Remote Streamable HTTP

Stdio remains the default and simplest local transport. The same 45-tool server can also run as a stateless Streamable HTTP MCP in either private bearer-authenticated mode or an explicitly enabled public read-only mode.

Private bearer-authenticated mode

export WWDC_MCP_BEARER_TOKEN="$(openssl rand -hex 32)"
export WWDC_MCP_HTTP_HOST=127.0.0.1
export WWDC_MCP_HTTP_PORT=8789
npm run start:http

Routes:

  • GET /healthz

  • POST /mcp

For a deliberately public, read-only connector endpoint:

export WWDC_MCP_PUBLIC_READ_ONLY=1
export WWDC_MCP_HTTP_HOST=0.0.0.0
export WWDC_MCP_HTTP_PORT=8789
npm run start:http

The MCP route fails closed with 503 auth_not_configured unless either bearer authentication is configured or WWDC_MCP_PUBLIC_READ_ONLY=1 is explicitly enabled. Public mode does not add write capabilities: it exposes the same 45 read-only tools.

To mount the service behind a shared reverse proxy without path rewriting:

export WWDC_MCP_PATH_PREFIX=/wwdc

Routes become /wwdc/healthz and /wwdc/mcp.

The built-in HTTP server does not terminate TLS. If you expose it outside localhost, put it behind a TLS edge/reverse proxy, rate-limit and monitor it, and treat bearer tokens as secrets.

Hosted public endpoint

A Cloudflare-backed public endpoint is being prepared at:

https://wwdc-mcp.smatdesigns.com/mcp

It will be marked live here only after the deployed endpoint passes health, MCP initialize, tool-catalog, and source-grounding verification. Until then, use the GitHub release/MCP Registry or self-hosted modes above.

See docs/DEPLOY.md for the full runbook.

Trust and security model

  • All 45 MCP tools are read-only.

  • Retrieved web text is treated as untrusted evidence, not executable instruction.

  • Search responses can include content_safety metadata.

  • wwdc_security_manifest reports the canonical tool surface, manifest hash, read-only posture, and prompt-injection handling.

  • Remote HTTP fails closed by default. Private mode requires bearer authentication; anonymous access exists only when the operator explicitly enables WWDC_MCP_PUBLIC_READ_ONLY=1.

  • The default stdio server opens no network listener.

  • Ingest fetches public Apple/Swift sources. apple_doc_lookup performs live public Apple documentation requests.

  • Local semantic reranking uses a Hugging Face Transformers/ONNX model and may download its model files on first use.

  • Optional session-summaries sends bounded session metadata/transcript excerpts to Anthropic only when ANTHROPIC_API_KEY is explicitly configured.

  • No Apple Developer account credentials are required or stored.

For vulnerability reporting and deployment cautions, see SECURITY.md.

Tests and release proof

npm run build
npm test
npm audit --audit-level=high

npm test covers smoke tests, ingest parsing, security evaluation, stdio MCP E2E, search regression, package smoke, and Streamable HTTP MCP E2E.

The protocol tests verify the 45-tool catalog and exercise the trust manifest over both supported transports.

Architecture

  • Runtime: Node.js >=22.14, TypeScript

  • Default transport: MCP stdio

  • Optional transport: authenticated stateless Streamable HTTP

  • Storage: SQLite + FTS5

  • Semantic reranking: local nomic-ai/nomic-embed-text-v1.5 via Hugging Face Transformers/ONNX

  • Response budget: bounded tool responses, with compact envelopes for oversized JSON

  • Ingest: public Apple/Swift sources with bounded concurrency, retries, and a stable User-Agent

  • Safety: content-safety metadata, read-only tool contract, security manifest, fail-closed remote auth

Public project docs

From Apple guidance to App Store execution

WWDC MCP is intentionally read-only: it helps your agent understand current Apple APIs, design guidance, platform changes, and App Review requirements without holding App Store Connect credentials.

When the research is done and you need to execute the release workflow, AiSCent is the companion product: App Store Connect automation for release operations such as localization, screenshots, metadata, TestFlight readiness, and submission workflows.

A useful agent workflow:

  1. Ask WWDC MCP to audit the app against current Apple guidance.

  2. Fix the code and UX with source-grounded evidence.

  3. Use AiSCent for the App Store Connect work needed to get the build ready to ship.

WWDC MCP = know what Apple expects. AiSCent = help get the release through App Store Connect.

Contributing

Issues and PRs are welcome. If you change the MCP tool surface, ingest behavior, transport behavior, or public claims, update the matching tests and docs in the same change.

See CONTRIBUTING.md.

License

MIT

Available Tools

45 tools
apple_api_availabilityApple API availability (min OS version)B
Read-onlyIdempotent

Look up the minimum OS version an Apple API was introduced in, and whether it has been deprecated. Uses the apple_docs index.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown
api_nameYesSymbol name, e.g. "SwiftUI.View", "UITableView"

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior, so safety is fully covered. The description adds the data source (apple_docs index) and the two pieces of information returned, but says nothing about index coverage limits, lookup failures for unknown symbols, or how deprecation is reported.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the primary capability; the second sentence about the apple_docs index earns its place as a scope signal. No filler or repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two parameters and no output schema, the description does indicate the content of the answer (introduced-in version plus deprecation status), which is the main thing an agent needs. It stops short of covering not-found behavior or output shape, but the tool is simple enough that this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: api_name is documented with concrete examples ("SwiftUI.View", "UITableView") and format has an enum with a default. The description adds no extra meaning about the symbol-name format, framework prefixing, or the effect of choosing json vs markdown, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb and resource — looking up the minimum OS version an Apple API was introduced in, plus deprecation status — which is concrete and unambiguous. It does not, however, distinguish itself from close siblings such as apple_api_deprecation, wwdc_find_api_introduction, or apple_what_replaced, so an agent cannot tell from the description alone which one to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no alternative tools are named despite several siblings covering overlapping ground (apple_api_deprecation for deprecation, wwdc_find_api_introduction for introduction versions). The only scoping signal is the implicit statement that it queries the apple_docs index, which hints at coverage but does not guide tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_api_deprecationApple API deprecation statusA
Read-onlyIdempotent

Check whether an Apple API symbol is deprecated, when it was deprecated, and what replaced it. Looks up by symbol name (e.g. UIWebView, UIAlertView).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown
api_nameYesSymbol name to look up, e.g. "UIWebView", "UIAlertView"

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds that the lookup is by symbol name and what facts come back, but says nothing about coverage limits (which SDKs/versions), failure behavior for unknown symbols, or the format parameter's effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core purpose and then the lookup key. Nothing redundant and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 previews the return shape (deprecation status, deprecation date, replacement symbol), which is the main thing an agent needs. It is slightly incomplete on scope boundaries (SDK/version coverage) and the format option, but adequate for a simple read-only lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both api_name and the format enum. The description's examples (UIWebView, UIAlertView) duplicate the schema's own example text and it never mentions the format parameter, so it adds essentially no semantic value beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and resource (Apple API symbol deprecation status), and enumerates the three facts returned: deprecated?, when, and replacement. It does not explicitly distinguish itself from close siblings like apple_api_availability or apple_what_replaced, which cover overlapping territory, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Looks up by symbol name (e.g. UIWebView, UIAlertView)" implies the usage context and input shape, but there is no explicit when-to-use, no when-not-to-use, and no routing to alternatives such as apple_api_availability or apple_what_replaced for adjacent questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_cross_referencesApple entity cross-referencesA
Read-onlyIdempotent

Returns outgoing and/or incoming edges from the cross-reference graph for a given entity. Use to find: which sessions mention an API, which proposals a session implements, which APIs a session covers, related sessions. Build the graph with npm run ingest -- --source cross-reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown
directionNo'out' = edges FROM this entity, 'in' = edges TO this entity, 'both' = all.both
entity_idYesEntity ID, e.g. 'wwdc2024-10016' for a session, 'swiftui/view' for a doc, 'SE-0428' for a proposal.
entity_typeYesType of the entity.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful non-annotation context: the graph must first be populated with `npm run ingest -- --source cross-reference`, which tells the agent why results could be empty. It stops short of describing pagination or edge metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both front-loaded: the first defines the operation and directionality, the second supplies use cases and the data prerequisite. No filler, no repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only graph query with no output schema and fully documented parameters, the description covers operation, directionality, use cases and a setup prerequisite. The main remaining gap is what an edge record actually contains (edge type/label), which the agent would have to discover at call time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including a clear enum gloss for `direction`, so the schema carries the parameter burden and baseline is 3. The phrase 'outgoing and/or incoming edges' loosely mirrors the `direction` parameter but adds no syntax or semantics beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Returns outgoing and/or incoming edges from the cross-reference graph for a given entity', with concrete examples of what those edges represent. It is clear what the tool does, but it never differentiates itself from overlapping siblings such as wwdc_related_sessions or wwdc_sessions_for_api, which cover some of the same questions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies concrete when-to-use scenarios ('which sessions mention an API', 'which proposals a session implements', 'related sessions'), which is stronger than implied usage. However, it names no exclusions or alternative tools, so the agent must infer when a sibling would be a better choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_doc_getGet indexed Apple documentationB
Read-onlyIdempotent

Return an Apple Developer documentation page from the local index by normalized path, e.g. swiftui/view.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFramework path or Apple documentation URL.
formatNoResponse formatmarkdown
body_charsNo
include_rawNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds that content comes from a local index (implying no live network fetch), but says nothing about truncation behavior, missing-path handling, or how format changes the response. Adds some value over annotations, but not much.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with an inline example and zero filler. It is efficient, though for a four-parameter tool with half its schema undocumented it is arguably under-sized rather than optimally scoped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should carry more of the return contract, yet it does not explain markdown vs json output or the body_chars truncation. Annotations cover safety and the retrieval semantics are simple enough that the gap is moderate rather than severe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: body_chars and include_raw have no description in either schema or prose, leaving truncation length and raw-content inclusion undocumented. The description does add real value for the required param by specifying a 'normalized path' with the concrete example `swiftui/view`, which goes beyond the schema's terse 'Framework path or Apple documentation URL.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return an Apple Developer documentation page') plus the source ('from the local index'), so the agent knows this is a direct retrieval rather than a search. However, it never distinguishes itself from the near-identically named sibling apple_doc_lookup, leaving the agent to guess which of the two to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no when-not-to-use, and no mention of alternatives such as apple_doc_lookup or apple_doc_list_framework. The example path is invocation help, not selection guidance, so the agent gets no routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_doc_list_frameworkList Apple docs by frameworkB
Read-onlyIdempotent

Browse all indexed Apple documentation symbols and articles for a framework or module. Matches against the modules JSON array and the doc path prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by symbol kind or role, e.g. 'protocol', 'struct', 'article'.
limitNo
formatNoResponse formatmarkdown
offsetNo
frameworkYesFramework or module name, e.g. 'SwiftUI', 'StoreKit', 'AVFoundation'.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral detail beyond that - the matching mechanism ('modules JSON array and doc path prefix') - which explains why a framework name resolves to results, but says nothing about pagination, result ordering, or return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the primary purpose front-loaded and the matching rule following immediately. No filler, though the second sentence leans toward implementation detail rather than agent-facing guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter listing tool with no output schema, the description covers what is listed and how the framework filter resolves, but omits result limits/pagination behavior and the effect of the 'format' enum. Annotations carry the safety side, but the listing/pagination behavior an agent needs is left to the schema defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%, and the description clarifies the semantically loaded parameter (framework) as a name matched against module arrays and doc path prefixes, which the schema only illustrates with examples. However, it adds nothing about 'type', 'limit', 'offset', or 'format', so the remaining gaps are only partially compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Browse'/'List') and resource ('indexed Apple documentation symbols and articles') scoped to a framework or module, which matches the title. It does not explicitly name how it differs from siblings like apple_doc_lookup or apple_doc_get, so an agent must infer that this is the enumeration path versus the retrieval paths.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Browse all ... for a framework or module' implies the use case (enumerate a framework's symbols) but gives no explicit when-to-use vs when-not guidance and no mention of alternatives such as apple_doc_lookup for targeted retrieval. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_doc_lookupLookup an Apple developer docB
Read-onlyIdempotent

Fetch an Apple /documentation JSON node by path (e.g. 'swiftui/view', 'foundationmodels/languagemodel'). Returns live data (no cache).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFramework path or Apple documentation URL, e.g. `swiftui/view` or `https://developer.apple.com/documentation/swiftui/view`.
formatNoResponse formatmarkdown

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior. The description adds one behavioral fact beyond annotations — 'Returns live data (no cache)' — but omits return format details, error behavior, or how the format parameter affects output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and examples, then a compact operational note. Zero waste and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with rich annotations and full schema coverage, the description provides purpose, path examples, and a live-data caveat. It lacks sibling differentiation and format details, but those gaps are minor given the structured data available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully documents both 'path' and 'format'. The description repeats path examples but adds no syntax or semantic details beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Fetch) and resource (Apple /documentation JSON node) with concrete path examples. It does not differentiate itself from sibling tools like apple_doc_get or apple_doc_list_framework, so it's clear but lacks sibling routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no when-to-use, when-not-to-use, or alternative selection guidance. The examples illustrate path format but give no context for choosing this tool over siblings such as apple_doc_get.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_hig_listBrowse Human Interface Guidelines entriesA
Read-onlyIdempotent

List HIG entries with optional category and keyword filters. Groups results by category. Use apple_hig_search for full-text FTS search; use this to browse by category (e.g. 'Foundations', 'Components', 'Inputs').

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
formatNoResponse formatmarkdown
offsetNo
keywordNoKeyword filter applied to title and body.
sectionNoHIG category substring filter, e.g. 'Foundations', 'Components', 'Inputs'.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds a real behavioral trait ('groups results by category'), but says nothing about pagination despite limit/offset params, nor return format. Adds some value but not rich context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences, front-loading what the tool does before the alternative routing. Nothing is redundant and no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 supplies the key return-shape fact (grouped by category) plus filter routing. Minor gaps remain around pagination and the format parameter, but an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%, and the schema already carries descriptions for keyword, section, and format. The description restates the category/keyword filters and adds example values, but leaves limit/offset/format unexplained, which is baseline-adequate rather than additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List'), resource ('HIG entries'), and scope (optional category/keyword filters, grouped by category). It also names the sibling it is not ('apple_hig_search'), so an agent can distinguish browse-vs-search without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes between this tool and the alternative: 'Use apple_hig_search for full-text FTS search; use this to browse by category.' It gives the selecting condition and concrete category examples ('Foundations', 'Components', 'Inputs').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_search_allFederated search across all Apple contentA
Read-onlyIdempotent

Search all indexed Apple content at once: WWDC sessions, Apple docs, HIG, and Swift Evolution. Results are merged and ranked by relevance.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesSearch query
typesNoContent types to include
formatNoResponse formatmarkdown

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral detail — results are merged and ranked by relevance — but says nothing about pagination, the 40-result ceiling, or how ranking ties are resolved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the scope statement front-loaded and the merge/ranking behavior following immediately. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only federated search with no output schema and a largely self-documenting parameter set, the description covers the essentials. It is slightly thin on result handling (pagination/limit) and on when to narrow the search, but nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and the terse enum values (session, doc, hig, evolution) are decoded by the description into WWDC sessions, Apple docs, HIG, and Swift Evolution, which is real added meaning beyond the schema. The limit parameter and the default type set remain undocumented in prose, keeping this below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and a precisely scoped resource (all indexed Apple content), then enumerates the four covered domains: WWDC sessions, Apple docs, HIG, and Swift Evolution. The word 'all' plus that enumeration clearly separates it from the many domain-specific siblings such as wwdc_search, apple_hig_search, and apple_doc_lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by 'at once' and the broad scope; the description never says when to prefer this federated search over the narrower siblings, nor does it mention any exclusions or prerequisites. An agent can infer 'use this for cross-domain lookups' but gets no explicit routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_swift_book_getSwift Language Reference chapterA
Read-onlyIdempotent

Retrieve a chapter from The Swift Programming Language book (docs.swift.org). Covers Language Guide (closures, concurrency, generics…) and Language Reference (grammar, declarations, attributes). Search with wwdc_search first to find the slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown
chapterYesChapter slug, e.g. 'concurrency', 'generics', 'closures'. Use wwdc_search to discover slugs.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the source host (docs.swift.org) and the prerequisite discovery step, but says nothing about response size, pagination, or failure behavior for a bad slug.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero waste; the retrieval purpose is front-loaded and the prerequisite guidance follows. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only 2 params, full schema coverage, annotations covering safety, and no output schema, the description is nearly sufficient for correct invocation. The only minor gap is not contrasting the markdown vs json formats, which the schema enum already implies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (chapter slug, format enum with default) are already documented in the schema, including the wwdc_search hint. The description largely restates the schema rather than adding new format/syntax detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Retrieve a chapter from The Swift Programming Language book') plus the content scope it covers (Language Guide and Language Reference). This clearly separates it from general doc tools like apple_doc_get and from the evolution-specific apple_swift_evolution_get sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Search with wwdc_search first to find the slug,' which is a concrete prerequisite for successful invocation. It stops short of stating when-not to use this tool versus other retrieval siblings, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_swift_evolution_filterFilter Swift Evolution proposalsA
Read-onlyIdempotent

List Swift Evolution proposals with rich filters: Swift version, status, author, keyword FTS. Returns a markdown table. Use apple_swift_evolution_get for the full body of a specific proposal.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
authorNoAuthor name substring.
formatNoResponse formatmarkdown
offsetNo
statusNoStatus substring, e.g. 'Implemented', 'Accepted', 'Rejected', 'Active review', 'Withdrawn'.
keywordNoFull-text keyword search on title and body.
swift_versionNoSwift version prefix, e.g. '5.9', '6.0', '6.1'.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is fully covered. The description adds genuinely useful behavioral context beyond the structured fields by disclosing the response shape ('Returns a markdown table') in the absence of an output schema. It adds nothing about pagination or error behavior, but the annotations carry most of the weight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with zero filler: the capability and filters come first, then the sibling routing instruction. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a seven-parameter read-only search tool with no output schema, the description covers purpose, filters, return format and the alternative tool, which is enough for correct invocation. The only real omission is any guidance on pagination via limit/offset, and the unresolved overlap with apple_swift_evolution_list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 71%, so the schema already documents most of the seven parameters, and the description largely echoes those same filter names (version, status, author, keyword). The 'FTS' annotation adds a small hint about keyword matching semantics, but limit/offset/pagination behavior is left entirely to the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List Swift Evolution proposals') and enumerates the filter dimensions, which is more than a restatement of the title. It explicitly distinguishes itself from apple_swift_evolution_get. However, it does not differentiate itself from the sibling apple_swift_evolution_list, leaving a real ambiguity for an agent choosing between the two list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear routing instruction: 'Use apple_swift_evolution_get for the full body of a specific proposal,' which is an explicit when-not-to-use signal plus a named alternative. It stops short of 5 because it never explains when this filter tool is preferable to the sibling apple_swift_evolution_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_swift_evolution_getGet a Swift Evolution proposalA
Read-onlyIdempotent

Return a proposal by id (e.g. SE-0428) with status, authors, and full body.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
formatNoResponse formatmarkdown

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine value by disclosing the returned content (status, authors, full body), which no annotation conveys. It says nothing about error behavior for an unknown id, keeping it short of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and resource, with the return payload and id example appended without filler. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 enumerates the return fields (status, authors, full body), which is what an agent most needs for a single-item get. The only gap is the format parameter's effect on the response, which is left to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: format carries its own 'Response format' description while id has none. The description compensates for id by giving the expected identifier form (SE-0428), but adds nothing about the markdown/json format parameter. Baseline 3 fits this partial compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Return) and resource (a proposal by id), plus what the response contains (status, authors, full body) and the id format example SE-0428. It clearly implies the single-item counterpart to apple_swift_evolution_list, though it never names a sibling to disambiguate explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the example id format (SE-0428) signals you must already have a proposal identifier, which indirectly routes browsing users to apple_swift_evolution_list or apple_swift_evolution_filter. There is no explicit when-to-use statement or exclusion for those siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_swift_evolution_listList Swift Evolution proposalsB
Read-onlyIdempotent

List proposals (optionally filter by status: Implemented, Accepted, Rejected, Active review).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
formatNoResponse formatmarkdown
offsetNo
statusNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the description does not need to restate it. It adds real value by enumerating the valid status values, but it says nothing about pagination behavior (limit/offset) or the shape/format of the response, which are the behaviors not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the core action front-loaded and the filter detail parenthesized, so nothing is wasted. It is perhaps too terse to be maximally informative, but the structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool whose annotations already carry the safety profile, the description is broadly adequate. The gaps are pagination semantics (limit/offset defaults/caps) and routing among the three closely related swift_evolution siblings, both of which the agent needs to call it well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (just 'format'), so the schema leaves status, limit, and offset as bare types. The description partially compensates by enumerating the status values (Implemented, Accepted, Rejected, Active review), which the schema does not do, but limit and offset remain undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('List proposals') and scopes the optional status filter, so an agent knows exactly what it returns. However, it never distinguishes itself from its close sibling apple_swift_evolution_filter, which appears designed for the same filtering job, so sibling differentiation is missing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'optionally filter by status' implies usage context (browse the corpus, narrow by status), which is more than nothing. But there is no when-to-use/when-not guidance, no routing to apple_swift_evolution_get (single proposal) or apple_swift_evolution_filter, leaving the agent to guess which of the three to call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_swift_pattern_findFind Apple Swift patternsB
Read-onlyIdempotent

Find repeated implementation/product patterns across indexed WWDC sessions, Apple docs, tutorials, HIG, and Swift Evolution. Use for API adoption, app architecture, and opportunity discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesPattern area, API, feature, or product need, e.g. `App Intents Spotlight actions` or `SwiftData migration`.
formatNoResponse formatmarkdown
year_minNo
platformsNo
frameworksNo
min_source_kindsNoMinimum distinct source kinds required for a strong pattern.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds that results are synthesized as 'repeated' patterns across source kinds, but says nothing about result volume, ranking, or how the min_source_kinds threshold affects output. Modest added value, not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the resource and scope front-loaded and no filler. Every clause carries meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter cross-corpus search tool with no output schema and low schema coverage, the description is thinner than ideal. A caller can understand what the tool does but not enough about filtering, limits, or result shape to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 43% across 7 parameters, so the description is expected to compensate and does not. It implies a query and a multi-source scope but never explains limit, platforms, frameworks, year_min, format, or how min_source_kinds controls pattern strength.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Find') and a well-defined resource ('repeated implementation/product patterns') and enumerates the corpora it spans (WWDC, Apple docs, tutorials, HIG, Swift Evolution). This cross-source aggregation distinguishes it from single-corpus siblings like wwdc_search or apple_doc_lookup, though those siblings are not named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use for API adoption, app architecture, and opportunity discovery' gives implied usage contexts. However, it offers no when-not guidance and does not route the agent away from overlapping tools such as apple_search_all or wwdc_find_api_introduction, leaving the selection decision partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_tutorial_getGet an Apple tutorial (DocC)B
Read-onlyIdempotent

Return a tutorial from local index (ingest first) including chapter list and estimated time.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
formatNoResponse formatmarkdown

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds two things annotations cannot: the data comes from a local index and requires prior ingestion, and the payload includes chapter list plus estimated time.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the prerequisite is placed early. The parenthetical is slightly compressed/ambiguous but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 names what is returned (chapter list, estimated time) and the ingest prerequisite. However it never explains the required id (format, source) nor the default/format behavior, so an agent still lacks enough to call it confidently from scratch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% — 'format' is documented ('Response format') but 'id' has no description at all. The description mentions neither parameter, so it does not compensate for the undocumented required 'id' (no hint about its shape or where to obtain one).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return a tutorial') and adds scope detail (chapter list, estimated time). It implicitly separates itself from apple_swift_book_get via the word 'tutorial', but never explicitly distinguishes from siblings or states what a tutorial is versus a book.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(ingest first)' implies a prerequisite sequence, which is real usage guidance, but it names no ingest tool and gives no when-to-use/when-not-to-use conditions or alternatives. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apple_what_replacedWhat replaced a deprecated Apple APIA
Read-onlyIdempotent

Given a deprecated Apple API symbol, finds what replaced it (from the deprecated_message field) and lists WWDC sessions introducing the replacement.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown
api_nameYesDeprecated API name, e.g. "UIWebView", "UIAlertView"

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly=true, idempotent=true, destructive=false), so the bar is lower. The description adds genuine context by disclosing the data provenance ('from the deprecated_message field') and that the response concatenates replacement info with WWDC session listings. It does not discuss coverage limits or what happens when no replacement exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the input precondition and names both outputs. Nothing is padding and no sentence fails to earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with a fully described 2-parameter schema, complete annotations, and no output schema, the description covers what the agent needs: input kind, data source, and return composition. The absence of any note on missing-replacement behavior is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, including the enum on 'format' and examples like UIWebView/UIAlertView. The description restates that the input is a deprecated API symbol but adds no syntax or format 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: given a deprecated symbol, it 'finds what replaced it' and 'lists WWDC sessions introducing the replacement.' That scope is clearly distinct from data-only siblings like apple_api_deprecation and wwdc_find_api_introduction. It loses a point only because it never explicitly contrasts itself 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Given a deprecated Apple API symbol' implicitly states the precondition for use, but there is no explicit when-not guidance and no named alternative (e.g. apple_api_deprecation or wwdc_find_api_introduction). Usage is inferable but not routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appstore_guideline_getGet App Store guideline by ID or section numberA
Read-onlyIdempotent

Retrieve the full text of a specific App Store Review Guideline section. Accepts the anchor slug (e.g. 'safety-1-1') or section number (e.g. '1.1'). Falls back to prefix-matching when no exact match is found.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGuideline anchor slug (e.g. 'safety-1-1') or section number (e.g. '1.1', '3.1.1').
formatNoResponse formatmarkdown

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the read-only, idempotent, non-destructive, non-open-world profile, so the safety burden is lifted. The description adds a genuinely non-obvious behavioral trait: fuzzy prefix-matching when no exact match exists, which tells the agent it may receive a neighboring section rather than a miss.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The primary purpose and the accepted inputs lead, and the fallback caveat follows — well front-loaded and appropriately sized for a two-parameter lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the return-value burden and does address it ('full text'), plus the format parameter governs markdown vs. json. It doesn't state what happens when neither exact nor prefix matching succeeds, which is the remaining small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (id, format) are already documented in the schema, including the slug/number formats and the enum. The description restates the id forms without adding meaning, and says nothing about the format parameter beyond what the enum provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Retrieve the full text of a specific App Store Review Guideline section') and enumerates the accepted identifier forms (anchor slug vs. section number). This is clearly distinguishable from the sibling appstore_guidelines_search, which would return matching sections rather than one full section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The accepted input forms imply usage ('use this when you know the section id'), but no explicit when-to-use guidance or alternative routing to appstore_guidelines_search is given. The prefix-matching fallback note is behavioral rather than usage guidance, so the tool selection guidance remains implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swift_app_auditSwift app audit contextA
Read-onlyIdempotent

Build an audit-grade Swift/SwiftUI/macOS/iOS research bundle from local WWDC, HIG, tutorials, and Swift Evolution data. Use before code changes to map feature/platform/symptom to evidence and validation steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoAudit focus area.general
limitNo
formatNoResponse formatmarkdown
featureNoFeature/screen/workflow being audited.
symptomNoObserved bug, performance issue, warning, or failure mode.
year_minNoPrefer WWDC sessions from this year or newer.
platformsNoTarget Apple platforms.
frameworksNoFrameworks or APIs, e.g. SwiftUI, SwiftData, AppKit, StoreKit.
include_evolutionNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorldHint=false, covering the safety profile. The description adds that the bundle is built from *local* data and is 'audit-grade,' which lightly corroborates the offline, repeatable behavior, but it discloses nothing further (e.g. scope of results, cost, determinism of the bundle) 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the artifact and its inputs front-loaded and the usage timing second. No filler or restated name/title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, zero-required composite aggregator with no output schema, the description supplies enough to invoke it (what it builds, from which sources, when to use it). It leaves the shape of the returned bundle unstated, but with no output schema and annotations covering safety, that gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 78% and the schema already documents focus, format, feature, symptom, year_min, platforms and frameworks. The description echoes the feature/platform/symptom mapping (matching three params) but adds no new syntax, defaults, or constraints, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact ('Build an audit-grade ... research bundle') and names the four data sources it draws from (WWDC, HIG, tutorials, Swift Evolution), which implicitly positions it as the composite aggregator over the granular siblings. It does not explicitly contrast itself against tools like wwdc_search or apple_hig_search, so differentiation stays implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use before code changes to map feature/platform/symptom to evidence and validation steps' gives a clear triggering context and success intent. No when-not guidance or explicit naming of the alternative single-source tools, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_export_statusDatabase table counts (health check)A
Read-onlyIdempotent

Returns row counts for all indexed tables. Use to quickly verify the state of the index — how many sessions, docs, summaries, cross-reference edges, etc. are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds the scope of what is counted, but says nothing about cost, latency, or that counts reflect the live index state. With annotations carrying the behavioral burden, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no waste: the first states what is returned, the second states when to use it. The purpose is front-loaded and the examples are compact rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter, no-output-schema tool, the description is nearly sufficient: it tells the agent what is counted, which substitutes for return-value documentation. It could still note that output shape follows the 'format' parameter, but nothing essential to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'format' parameter carries an enum and default, so the schema fully documents it. The description adds no meaning about the format parameter or how it affects the response, which is the correct baseline-3 case when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Returns row counts for all indexed tables', and clarifies scope with concrete examples (sessions, docs, summaries, cross-reference edges). It does not, however, distinguish itself from the sibling wwdc_ingest_status, which an agent could reasonably confuse with a status/health-check tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to quickly verify the state of the index' gives a clear, actionable when-to-use condition. It stops short of naming alternatives or exclusions — notably wwdc_ingest_status, which likely answers a related question — so the routing guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_find_api_introductionFind when an Apple API was introducedB
Read-onlyIdempotent

Given a Swift symbol, framework, or feature name (e.g. 'SystemLanguageModel', 'SwiftData', '@Observable', 'LiquidGlass'), searches WWDC sessions to determine which year it was first announced or introduced. Returns sessions sorted by year ascending so the earliest hit is listed first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
formatNoResponse formatmarkdown
symbolYesSwift symbol, API name, framework, or feature to find (e.g. 'SystemLanguageModel', 'SwiftData', 'LiquidGlass', '@Observable').

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, covering the safety profile. The description adds that it searches WWDC sessions and returns sessions sorted by year ascending, which is useful output behavior, but does not disclose limitations, rate limits, or auth needs. Comparable to the calibration example 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. Front-loads the input and action, then the output ordering. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with 3 parameters and no output schema, the description covers purpose, input examples, and return ordering. The schema provides defaults and an enum, and annotations cover safety. The only gap is the lack of explanation for the limit parameter, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (symbol and format have descriptions; limit has none). The description adds no information about the limit or format parameters and only repeats the symbol examples already present in the schema. It fails to compensate for the undocumented limit parameter, so a low score is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('searches'), resource ('WWDC sessions'), and goal ('determine which year it was first announced or introduced'). It does not explicitly differentiate from siblings like wwdc_sessions_for_api or apple_api_availability, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance, prerequisites, or alternatives. The description explains function but never says when to choose this over wwdc_search or apple_api_availability. Implied use case exists but no guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_get_pathwayGet a specific pathwayB
Read-onlyIdempotent

Returns a pathway with its ordered steps (sessions + tutorials + docs).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
formatNoResponse formatmarkdown

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the description carries a lighter burden. It usefully discloses the composite return shape (ordered steps spanning sessions, tutorials, and docs), which annotations do not cover, but says nothing about error behavior for an unknown id or ordering guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though its brevity is part of why usage and parameter guidance are absent rather than a strength in itself.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with no output schema and complete annotation coverage, the description covers the essential behavior and return content. Only the lack of routing to wwdc_list_pathways for id discovery keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: the 'format' enum is self-documenting, while 'id' has no description in either schema or prose. The description implies 'id' identifies the pathway but adds no format, source, or discovery hint (e.g. that it comes from wwdc_list_pathways), so it does not fully compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns a pathway') and adds the scope of what comes with it ('ordered steps: sessions + tutorials + docs'). It implicitly contrasts with the sibling wwdc_list_pathways by being the singular retrieval, but it never names or explicitly distinguishes that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus wwdc_list_pathways, and no prerequisite or exclusion guidance. The only usage signal is the implicit singular-vs-plural pairing with the list tool, which the agent must infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_get_sessionGet WWDC sessionB
Read-onlyIdempotent

Full record for a WWDC session by id (e.g. wwdc2024-10150). Includes description, topics, transcript, sample-code URLs, related docs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSession id, e.g. wwdc2024-10150
formatNoResponse formatmarkdown
include_chaptersNo
include_judgmentNo
transcript_charsNoMaximum transcript characters to return in markdown/json when transcript is included.
include_transcriptNo
include_sample_codeNo
include_related_docsNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered; the description usefully adds that the payload contains description, topics, transcript, sample-code URLs and related docs. It omits operationally relevant behavior such as the default transcript truncation (transcript_chars default 8000, max 25000) and the default markdown output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the key lookup identity front-loaded, and no filler. The second sentence is a content inventory that pulls double duty for parameter semantics, so it earns its place, though it is slightly list-like.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must name what comes back — and it does. For a read-only retrieval tool whose annotations cover the safety profile, an agent has enough to call it correctly, with the remaining gaps being sibling routing and the truncation/format defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 38% and the description partially compensates: the returned-content list maps implicitly onto include_transcript, include_sample_code and include_related_docs, and the id format is restated. It says nothing about format, transcript_chars, include_chapters or include_judgment, so roughly half the parameters remain unexplained in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Full record for a WWDC session by id' — with a concrete id example (wwdc2024-10150), so the agent knows exactly what it retrieves. It does not explicitly distinguish itself from near-siblings like wwdc_session_summary or wwdc_session_transcript_full, which keeps it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no routing to alternatives such as wwdc_session_summary for a quick overview or wwdc_session_transcript_full for the complete transcript. The word 'Full' faintly implies 'use when you want everything', but that is inference rather than stated guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_ingest_statusIngest status + what's newA
Read-onlyIdempotent

Shows per-source last-run metadata and the most recent sessions added. Use to confirm the index is fresh before querying.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNoISO timestamp; defaults to 7 days ago.
formatNoResponse formatmarkdown

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds useful context about what is returned (per-source run metadata plus recent additions), but with no output schema it stops short of describing structure, freshness semantics, or what 'last-run' means. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no waste; the purpose is front-loaded before the usage hint. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only status tool with a simple 3-param schema and annotations covering safety, the description conveys enough to invoke it correctly. Given there is no output schema, a note on the returned fields would have made it fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%: since and format carry descriptions while limit does not. The description references 'most recent sessions added', loosely implying the since/limit scoping, but adds no syntax or default behavior beyond the schema. Baseline for mid-to-high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('shows') and concrete resources ('per-source last-run metadata', 'most recent sessions added'), so an agent understands it is a status/observation tool. It does not, however, distinguish itself from the similarly-named sibling wwdc_export_status, which the agent could confuse with this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to confirm the index is fresh before querying' gives a clear trigger and even sequences it relative to other calls. There is no explicit exclusion or named alternative, but the when-to-use context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_list_pathwaysList learning pathwaysC
Read-onlyIdempotent

Curated + auto-derived Apple learning pathways (SwiftUI, visionOS, Swift 6, AI, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown
categoryNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description's only added nuance is provenance ('curated + auto-derived'), which is about content rather than behavior; it says nothing about filtering, ordering, result size, or what a pathway entry contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler, which is structurally clean. But the brevity crosses into under-specification for a tool with two parameters and no output schema, so terseness here costs more than it saves.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should at least convey what a returned pathway looks like and how category/format affect the response. Neither is addressed, leaving the agent unable to predict the result shape or filtering behavior before invoking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: 'format' is documented by the schema ('Response format' plus an enum), but 'category' has no description anywhere. The tool description does not explain that 'category' filters by topic area or how it relates to the listed examples, so it fails to compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (curated + auto-derived Apple learning pathways) and gives concrete scope examples (SwiftUI, visionOS, Swift 6, AI), which is more than a bare restatement of the title. However, it is a noun phrase with no verb, so the actual action (listing) and the boundary versus the sibling wwdc_get_pathway must be inferred from the tool name rather than the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as wwdc_get_pathway (fetch a single pathway) or wwdc_search. The agent gets no routing signal from the text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_list_session_codeList sample-code links for a sessionB
Read-onlyIdempotent

Returns every sample-code URL Apple linked from the session page (zips, GitHub repos, snippets).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
formatNoResponse formatmarkdown

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds that the result is the complete set of linked resources and what forms they take (zips, repos, snippets), but says nothing about the response shape, empty results, or what the format parameter changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with zero filler, front-loaded on the verb and the returned resource. It is efficient, though arguably too terse to carry its share of the documentation burden for a tool with an undocumented required parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does cover the substance of the return value (URLs plus their kinds), which is the main thing needed. Gaps remain on the format parameter, the id contract, and behavior for sessions with no sample code, so it is adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: 'format' is documented in-schema with an enum and default, while 'id' has no description. The phrase 'from the session page' implicitly identifies id as a session identifier, which is mild added meaning, but no format, example, or lookup hint is supplied for the one required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns) and resource (every sample-code URL Apple linked from the session page), and enumerates the resource kinds (zips, GitHub repos, snippets). It is clear what the tool does, but it never distinguishes itself from the close siblings wwdc_sample_code_list and wwdc_sample_code_grep, leaving the agent to infer the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use framing, no exclusions, and no mention of the obvious alternatives. With wwdc_sample_code_list and wwdc_sample_code_grep sitting in the same sibling set, the agent gets no guidance on which of the three to pick for a given intent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_list_sessionsList WWDC sessions for a yearA
Read-onlyIdempotent

Browse all sessions for a given WWDC year with optional topic, transcript, and sample-code filters. Returns session number, title, duration, and flags for transcript/sample-code availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesWWDC year, e.g. 2024.
limitNo
topicNoTopic substring filter, e.g. 'SwiftUI', 'Swift Concurrency'.
formatNoResponse formatmarkdown
offsetNo
sort_byNoSort column.session_number
sort_dirNoSort direction.asc
has_transcriptNoOnly return sessions with an indexed transcript.
has_sample_codeNoOnly return sessions with sample code URLs.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorld=false, and non-destructive, so the safety profile is covered. The description adds a partial view of the return shape (session number, title, duration, transcript/sample-code flags) but says nothing about pagination or result-set size behavior despite limit/offset params.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly-packed sentences with the primary action and scope front-loaded and no filler. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-param list tool with no output schema, the description usefully sketches the returned fields and the main filter axes. It leaves pagination and sort behavior to the schema, which is acceptable, but a note on result limits would have made it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 78%, so the schema does most of the work. The description echoes the topic, transcript, and sample-code filters but adds no syntax or semantic detail beyond what the schema already documents, and ignores limit/offset/sort entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (browse/list) and resource (WWDC sessions) with clear scope (for a given WWDC year), which distinguishes it from wwdc_search and wwdc_get_session. It doesn't explicitly name the sibling it competes with, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — enumerate sessions by year with optional filters — but there is no explicit when-to-use vs when-not-to-use guidance and no named alternative for query-based lookup (e.g. wwdc_search). Adequate but with a clear gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_list_topicsList WWDC topicsB
Read-onlyIdempotent

Top topics across WWDC sessions with counts (e.g. SwiftUI, Swift, AI, visionOS).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
formatNoResponse formatmarkdown

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds that results are ranked topics with counts, which is mild output context, but says nothing about ordering, truncation at the limit, or default result size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the resource front-loaded and examples parenthetically supplied. Nothing is wasted, though the brevity comes at the cost of the missing usage and parameter detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with annotations covering safety and no output schema, the essentials are present. But with two similar siblings and a half-documented parameter set, an agent still lacks what it needs to invoke this correctly versus wwdc_topics_by_year.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% – 'format' is documented in the schema but 'limit' has no description anywhere. The description mentions no parameters at all, so it fails to compensate for the undocumented limit (default 20, max 100) or explain how ranking interacts with it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Top topics across WWDC sessions') and clarifies the payload includes counts with concrete topic examples. However, it never distinguishes itself from the very similar sibling wwdc_topics_by_year, leaving the agent to infer that this one is the all-years aggregate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no alternatives named. The closest sibling, wwdc_topics_by_year, is never mentioned even though an agent must choose between them for a topic-listing request.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_list_yearsList WWDC yearsB
Read-onlyIdempotent

Returns the set of WWDC years present in the local index with session counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile needs no restating. The description contributes one genuinely useful behavioral detail - that results reflect only what is in the local index - which warns the agent the list may be incomplete relative to all WWDC years. It says nothing about ordering, caching, or how the markdown vs json choice changes output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with no filler, and the essential scope qualifier ('in the local index') is placed before the payload detail. Nothing extraneous, though the sentence is arguably thinner than the tool's role warrants.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description has to describe the return value, and it does: a set of years with per-year session counts. Combined with full schema coverage for the only parameter and annotations covering the safety profile, this is close to complete; only the shape/ordering of the returned set is left unspecified (notably whether counts are returned with the markdown format).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single optional 'format' parameter with 100% schema description coverage and an enum, so the schema fully documents it. The description adds no syntax, default, or format-selection guidance beyond the schema, which is the correct baseline of 3 when structured fields do the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Returns the set of WWDC years') and adds scope plus payload detail ('present in the local index with session counts'). That distinguishes it from adjacent discovery tools like wwdc_list_topics and wwdc_list_sessions, though it never names or contrasts those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no named alternative. An agent must infer on its own that this is the discovery call to run before filtering by year elsewhere; the phrase 'local index' hints at a scope caveat but does not tell the agent when to reach for this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_sample_code_grepGrep WWDC sample-code URLsB
Read-onlyIdempotent

Filter all indexed sample-code refs by substring/regex (e.g. find sessions with .zip or SwiftData).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
formatNoResponse formatmarkdown
patternYesRegex or literal substring.
is_regexNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the full safety profile (read-only, idempotent, non-destructive, closed-world), so the burden is lower. The description adds only that refs are 'indexed' and accepts regex; it says nothing about result shape, pagination, or how limit/format behave.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with the core filtering behavior front-loaded and an example appended. Efficient, though arguably tight enough that it sacrifices needed detail for a 4-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only 50% parameter coverage, the description should carry more: the is_regex behavior, limit semantics, and return format are all unaddressed. Adequate for a grep-style tool but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: pattern and format are documented in the schema, while limit and is_regex are not. The description's 'substring/regex' phrasing hints at the is_regex toggle but does not explain the default-off behavior or the limit cap, so it only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Filter') and resource ('indexed sample-code refs') with the matching mode ('substring/regex') plus concrete examples ('.zip', 'SwiftData'). It clearly differs from a plain list tool, though it never names a sibling to differentiate against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example queries ('find sessions with .zip') imply when the tool is useful, but there is no explicit when-to-use vs wwdc_sample_code_list or wwdc_list_session_code, and no exclusions or prerequisites. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_sample_code_listList WWDC sample code projectsA
Read-onlyIdempotent

Browse all indexed sample code projects with optional year and topic filters. Returns title, URL, kind (zip/github/snippet), and the linked session. Grouped by year.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoSample code kind filter, e.g. 'zip', 'github'.
yearNoFilter to a specific WWDC year.
limitNo
topicNoSession topic substring filter, e.g. 'SwiftUI', 'Swift', 'visionOS'.
formatNoResponse formatmarkdown
offsetNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive behavior, so the safety profile is covered. The description usefully adds the response contract (title, URL, kind, linked session, grouped by year), but says nothing about pagination behavior despite limit/offset params, nor about result size or cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the purpose front-loaded, followed by return fields and grouping. No filler, though the parenthetical enum listing is slightly redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by naming the returned fields and the grouping, which is the key information for an agent deciding to call it. Only pagination behavior is unaddressed, which is a minor gap for this simple read-only listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%: tag, year, topic and format are documented in the schema, while limit and offset are not. The description reinforces only year/topic filtering and incidentally hints at the tag values ('kind (zip/github/snippet)'), leaving pagination and format semantics to the schema. Baseline 3 is appropriate when the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Browse all indexed sample code projects') and even enumerates the returned fields and grouping. It is clear and distinct from most siblings, but never names or distinguishes itself from the close sibling wwdc_sample_code_grep or wwdc_list_session_code, so the 'browse all' framing has to carry the differentiation alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'optional year and topic filters' implies the browsing use case, but there is no explicit when-to-use or when-not-to-use guidance and no mention of the sibling grep tool that would be preferable for content-based lookup. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_security_manifestWWDC MCP security manifestA
Read-onlyIdempotent

Returns the canonical tool list, manifest hash, read-only posture, prompt-injection handling notes, and threat-model summary. Use this to detect tool-surface drift and to remind agents that retrieved content is untrusted evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world posture, so the safety profile is covered. The description adds genuinely non-derivable context: the response includes a manifest hash for drift detection and prompt-injection handling notes, disclosing the tool's security-relevant behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with zero waste; the return contents are front-loaded and the purpose follows immediately. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although there is no output schema, the description enumerates the salient returned fields, so an agent knows what to expect. For a zero-required-param, single-enum-param tool, nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (format) with 100% schema coverage and an enum, so the schema fully documents it. The description adds no additional meaning about format selection, which is the baseline-3 case when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns) and enumerates the exact resource contents (tool list, manifest hash, read-only posture, prompt-injection notes, threat-model summary). This is unmistakably distinct from every sibling, which are all content-retrieval or lookup tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names two use cases: detecting tool-surface drift and reminding agents that retrieved content is untrusted evidence. It gives clear context but names no alternatives or when-not conditions, which is acceptable given no sibling overlaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_sessions_for_apiWWDC sessions mentioning an API symbolA
Read-onlyIdempotent

Find all WWDC sessions that mention a specific API symbol in title, description, or transcript. Ranked by relevance. Shows year prominently.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoRestrict to a specific WWDC year
formatNoResponse formatmarkdown
symbolYesAPI symbol to search for, e.g. "SwiftData", "Observable", "SwiftUI.View"
include_transcriptNoIf true, include transcript snippet in results

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description usefully adds that results are relevance-ranked and that year is shown prominently, but says nothing about result limits, pagination, or transcript-snippet behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences that are front-loaded with the core action and scope. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search with no output schema, the description conveys the search fields, ranking, and year emphasis, which is close to complete. It stops short of describing result shape or limits, a minor gap for a lookup tool with full annotation coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (including year, format, include_transcript) are documented in the schema. The description adds no parameter-level detail beyond the schema and only obliquely touches search scope, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find), resource (WWDC sessions), and the exact search scope (title, description, or transcript) tied to an API symbol. This distinguishes it from transcript-only siblings like wwdc_transcript_search and generic wwdc_search without needing to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The symbol-in-sessions framing implies when to use it, but no alternatives (e.g., wwdc_search, wwdc_find_api_introduction) or exclusion conditions are named. Usage is inferable but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_session_summaryLLM-generated session summaryA
Read-onlyIdempotent

Returns the AI-generated structured summary for a WWDC session: 2-3 sentence overview, key APIs, topics, code patterns, and difficulty level. Falls back to the session description if no summary has been generated yet. Run npm run ingest -- --source session-summaries to populate.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse formatmarkdown
session_idYesSession ID, e.g. 'wwdc2024-10016'. Use wwdc_search or wwdc_get_session to find IDs.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, so the bar is lower. The description still adds real value by disclosing the degradation path ('falls back to the session description if no summary has been generated yet') and the ingest step needed to populate summaries — non-obvious behavior an agent should know before trusting the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the return payload, followed by the fallback condition and the population command. No filler or restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description enumerates the returned fields and explains the fallback shape, which is exactly what an agent needs. Two parameters, one required, both documented in the schema; nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the session_id format example and the enum for format, so the schema does the heavy lifting. The description adds no parameter-level detail (e.g., what the format enum changes in the response), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the AI-generated structured summary for a WWDC session') and enumerates the payload (overview, key APIs, topics, code patterns, difficulty level). This clearly separates it from wwdc_get_session, which returns the raw session record rather than the derived summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the mention of a fallback to the session description hints at what happens when data is absent, and the ingest command hints at population prerequisites. There is no explicit statement of when to pick this over wwdc_get_session or wwdc_session_transcript_full.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_session_transcript_fullRead full WWDC session transcript in chunksA
Read-onlyIdempotent

Retrieve the complete transcript of a WWDC session in paginated chunks. Use chunk_index=0 to start, then increment until chunk_index >= totalChunks. Useful for sessions where the excerpt in wwdc_get_session is insufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSession ID, e.g. wwdc2024-10150.
formatNoResponse formatmarkdown
chunk_sizeNoCharacters per chunk (default 8000, max 20000).
chunk_indexNo0-based chunk index.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world semantics, so the lower bar applies. The description adds genuinely useful behavioral context: the transcript arrives in bounded chunks and iteration terminates at totalChunks, which is not encoded in 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the core purpose and the paging loop front-loaded and the alternative-tool note last. Every sentence carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 implies the response includes a totalChunks field and usable text chunks, and it covers the paging loop an agent must drive. A brief note on what each chunk contains or the format trade-off would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining how chunk_index is driven (start at 0, increment, compare against totalChunks), turning an isolated parameter into a paging protocol an agent can execute.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Retrieve the complete transcript of a WWDC session') plus the delivery mechanism ('in paginated chunks'). It also contrasts itself against the sibling wwdc_get_session by framing itself as the full-transcript option versus that tool's excerpt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage protocol ('Use chunk_index=0 to start, then increment until chunk_index >= totalChunks') and a clear condition selecting this tool over wwdc_get_session. It stops short of stating exclusions (e.g. when to prefer wwdc_transcript_search for targeted lookups).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_topics_by_yearWWDC topics by yearA
Read-onlyIdempotent

Show the most popular WWDC session topics for a given year, or a cross-year comparison table. Useful for 'what was hot at WWDC 2024?' or comparing topic frequency trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoWWDC year (e.g. 2024). Omit for a cross-year comparison table.
limitNoTop N topics to return per year.
formatNoResponse formatmarkdown

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds the dual-mode behavior (omit year for a cross-year table), which is genuinely useful beyond the annotations, but says nothing about result size, ranking method, or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core capability before the example use cases. Every clause carries information; nothing is padded, though the quoted example queries are somewhat redundant with the usage statement that precedes them.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must convey enough about returns, and it only gestures at this via 'cross-year comparison table'. An agent knows the modes but not the response shape (ranked list with counts?) or whether markdown/json formats are actually rendered tables. Adequate but with a visible gap for a no-output-schema tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – year, limit, and format are all documented in the schema, including 'omit for a cross-year comparison table' and the default/max on limit. The description only restates the year omission behavior in prose, adding no new parameter semantics. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Show) and resource (most popular WWDC session topics), plus the two modes: single-year rankings and a cross-year comparison table. It is distinguishable from the nearby wwdc_list_topics sibling via the popularity/trend angle, though it never names that sibling to sharpen the contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Concrete example queries ('what was hot at WWDC 2024?', 'comparing topic frequency trends') make the intended use clear. It lacks any when-not guidance or an explicit pointer to alternative tools such as wwdc_list_topics or wwdc_search, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wwdc_what_changedCompare WWDC topic coverage across two yearsA
Read-onlyIdempotent

Compares WWDC session coverage of a topic (framework, feature, or API area) between two years. Useful for 'What's new in SwiftUI between 2024 and 2025?' Returns sessions for each year so you can see what was added.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of sessions to return per year.
topicYesFramework, feature, or API area to compare (e.g. 'SwiftUI', 'Foundation Models', 'StoreKit', 'Swift concurrency').
formatNoResponse formatmarkdown
year_aYesEarlier year (e.g. 2024).
year_bYesLater year (e.g. 2025).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds only that sessions are returned per year so the agent can see what was added — modest value beyond what annotations provide, with no mention of result ordering, empty-year handling, or truncation via limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the purpose stated first and the illustrative use case immediately after. Nothing is redundant and the reader learns the scope in the first clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter tool with full schema coverage and no output schema, the description does the one thing it must: it says the response contains sessions for each year, so the agent knows the return shape. Only minor gaps remain, such as how year_a/year_b ordering is enforced and what happens when a year has no matching sessions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters, including the enum format and the limit bounds, are already documented. The description's 'framework, feature, or API area' phrasing for topic repeats the schema's own wording rather than adding format or syntax detail beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (compares) and a specific resource (WWDC session coverage of a topic) with an explicit two-year scope. The cross-year comparison framing is inherently distinguishable from siblings like wwdc_topics_by_year or wwdc_search, which operate on a single year or a query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The quoted example question ('What's new in SwiftUI between 2024 and 2025?') implies when the tool is appropriate, which is useful context. However, it never names an alternative (e.g. wwdc_topics_by_year for single-year coverage, or wwdc_search for topic lookup) or states when not to use it, leaving routing to inference.

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.

  1. 45 tool updatesv0.2.1
    • First observedapple_api_availability
    • First observedapple_api_deprecation
    • First observedapple_cross_references
    • First observedapple_doc_get
    • First observedapple_doc_list_framework
    • First observedapple_doc_lookup
    • First observedapple_forum_search
    • First observedapple_hig_list
    • First observedapple_hig_search
    • First observedapple_release_notes_search
    • First observedapple_search_all
    • First observedapple_swift_book_get
    • First observedapple_swift_evolution_filter
    • First observedapple_swift_evolution_get
    • First observedapple_swift_evolution_list
    • First observedapple_swift_pattern_find
    • First observedapple_tutorial_get
    • First observedapple_what_replaced
    • First observedappstore_guideline_get
    • First observedappstore_guidelines_search
    • First observedswift_app_audit
    • First observedswift_forum_search
    • First observedwwdc_export_status
    • First observedwwdc_find_api_introduction
    • First observedwwdc_get_pathway
    • First observedwwdc_get_session
    • First observedwwdc_ingest_status
    • First observedwwdc_list_pathways
    • First observedwwdc_list_session_code
    • First observedwwdc_list_sessions
    • First observedwwdc_list_topics
    • First observedwwdc_list_years
    • First observedwwdc_related_sessions
    • First observedwwdc_sample_code_grep
    • First observedwwdc_sample_code_list
    • First observedwwdc_search
    • First observedwwdc_security_manifest
    • First observedwwdc_session_deep_link
    • First observedwwdc_session_summary
    • First observedwwdc_session_transcript_full
    • First observedwwdc_sessions_for_api
    • First observedwwdc_speaker_search
    • First observedwwdc_topics_by_year
    • First observedwwdc_transcript_search
    • First observedwwdc_what_changed

TDQS

B3.2/5.0

Scored across 45 tools

Disambiguation3/5

Many search/retrieval tools overlap (wwdc_search vs apple_search_all vs apple_swift_pattern_find; apple_doc_lookup vs apple_doc_get), so misselection is possible. Descriptions provide scope hints (e.g., FTS vs live, transcript vs session), but the boundaries are not always crisp given the breadth of content types.

Naming Consistency4/5

All names use snake_case with domain prefixes (wwdc_, apple_, appstore_, swift_), which is predictable. However, prefixes are inconsistent (apple_swift_evolution_* vs swift_app_audit; appstore_guidelines_search vs appstore_guideline_get) and a few names are noun phrases rather than verb_noun.

Tool Count2/5

45 tools is excessive for a research MCP; many could be consolidated (e.g., multiple search endpoints, status endpoints) or made optional. The breadth likely overwhelms tool selection and leaves little room for the agent to choose correctly.

Completeness4/5

The surface covers WWDC sessions, docs, HIG, Swift Evolution, App Store guidelines, forums, release notes, sample code, and cross-references, so most research tasks are supported. Minor gaps remain, such as no direct get for HIG entries and no tutorial list/search tool, but wwdc_search can often work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides 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
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides AI agents with instant access to official Apple developer documentation, Swift docs, design guidelines, and Apple Developer YouTube content through advanced semantic and hybrid search capabilities. Features AI-powered reranking for accurate retrieval of Apple platform knowledge including iOS, macOS, watchOS, tvOS, and visionOS development resources.
    5
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides comprehensive access to Apple's development documentation ecosystem including hidden Xcode docs, Swift Evolution proposals, GitHub repositories, and WWDC session notes. Enables developers to search and retrieve advanced Apple development resources not available through public channels.
    16
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides 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.
    18
    1,132 npm
    1,381
    MIT