Strong foundation with clear naming (verb_noun pattern), comprehensive descriptions (avg 180 chars), and well-structured schemas. All 9 tools have explicit input schemas with type definitions and parameter descriptions. Pagination support is present across list/report tools. However, output schemas are not documented in the source code, and error handling lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite all tools being read-only. Missing dependency hints between tools (e.g., 'call list_campaigns first to get campaignId').
Fetch performance metrics for ad groups within a specific Apple Search Ads campaign: impressions, taps, TTR, spend, CPI, installs (tap-through and view-through), and install rate. Requires ASA authentication; read-only. Use get_campaign_report for a campaign-level summary, or get_keyword_report for keyword-level detail. Results are grouped by country/region and include grand totals. Defaults to the last 30 days with WEEKLY granularity.
Fetch performance metrics for Apple Search Ads campaigns: impressions, taps, tap-through rate (TTR), localSpend, avgCPT, avgCPM, tapInstalls, viewInstalls, totalInstalls, new downloads, redownloads, CPI, and install rate. Requires ASA authentication; read-only. Use get_ad_group_report or get_keyword_report for deeper breakdowns. Results are grouped by country/region and include grand totals. Defaults to the last 30 days with WEEKLY granularity.
Fetch performance metrics for targeting keywords within a specific Apple Search Ads ad group: impressions, taps, TTR, spend, CPI, installs, and install rate. Requires ASA authentication; read-only. Use get_ad_group_report for a broader view of the ad group, or get_search_terms_report for actual search queries. Results are grouped by country/region and include grand totals. Defaults to the last 30 days with WEEKLY granularity.
Fetch performance metrics for actual search terms (queries) that triggered ads in a specific Apple Search Ads ad group: impressions, taps, TTR, spend, CPI, installs, and install rate. Requires ASA authentication; read-only. Use get_keyword_report to see metrics for your targeting keywords, or get_ad_group_report for a broader view. Results are grouped by country/region and include grand totals. Defaults to the last 30 days with WEEKLY granularity.
Output schemas not documented. Tool descriptions state what metrics are returned (impressions, taps, TTR, etc.) but no formal schema definition visible in source code. LLMs cannot plan downstream operations without knowing response structure.
No tool annotations despite all tools being read-only. Missing readOnlyHint declarations would help agents understand safety and retry semantics. Current spec (2026-07-28) supports tool annotations.
Error handling lacks recovery guidance. No visible error responses in tool implementations (src/tools/*.ts files shown are incomplete). Errors should guide LLMs: 'Invalid campaignId. Call list_campaigns() first to discover valid IDs.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2025-06-18+ | v2 |
Check if the aapl-ads-mcp server is running and reachable. Use this to verify the MCP connection before making API calls. No ASA authentication is required — returns server name, version, and current timestamp.
List ad groups within a specific Apple Search Ads campaign. Requires ASA authentication; read-only. Returns ad group metadata (id, name, status, default bid, automated keyword opt-in) but not performance metrics — use get_ad_group_report for metrics. Supports pagination via limit/offset; default limit 20, max 1000.
List all campaigns in the configured Apple Search Ads organization. Requires ASA authentication; read-only. Returns campaign metadata (id, name, status, budget, country, channel type) but not performance metrics — use get_campaign_report for metrics. Optionally filter by status. Supports pagination via limit/offset; default limit 20, max 1000.
List targeting keywords for a specific Apple Search Ads ad group. Requires ASA authentication; read-only. Returns keyword metadata (text, match type BROAD/EXACT, bid amount, status) but not performance metrics — use get_keyword_report for metrics. Supports pagination via limit/offset; default limit 20, max 1000.
List all Apple Search Ads organizations accessible with the configured credentials. Requires ASA authentication. Use this to verify credentials are valid and to discover available org IDs before calling other tools. Returns org ID, name, currency, timezone, payment model, and assigned role names.
Missing dependency hints in descriptions. Tools like list_ad_groups require campaignId but don't state 'Obtain from list_campaigns()' in the description. Agents must infer the discovery sequence.
Pagination defaults (limit=20) not enforced in schema constraints. Descriptions state defaults but JSON Schema lacks minItems/maxItems or explicit default values. Schema should declare limit: {type: 'number', minimum: 1, maximum: 1000, default: 20}.