# list_apple_ads_keywords

Targeting or negative keywords with their match type, status and bid. THE TWO RESOURCES SCOPE DIFFERENTLY and Apple enforces it: TARGETING keywords (the default) need campaignId OR adGroupId — campaignId alone now returns every targeting keyword in the campaign, which Apple’s older API had no way to ask for. NEGATIVE keywords (negative:true) always need one of the two as well, and Apple splits them by LEVEL: campaignId alone returns the CAMPAIGN-level negatives that suppress the whole campaign (scope ‘campaign’, the default), scope ‘adgroup’ returns every AD-GROUP-level negative across that campaign in one call, and naming an adGroupId returns just that ad group’s. The reply states which level it counted, because the row shapes are identical and the number means different things. There is no account-wide keyword list. Apple allows up to 5000 keywords per ad group. Read-only, free.

Agent View of the PolicyLayer registry record for `list_apple_ads_keywords`. HTML page: https://policylayer.com/tools/hermoso/list-apple-ads-keywords

## Facts

- Tool: `list_apple_ads_keywords`
- Server: Hermoso (`https://app.hermoso.ai/mcp`) — https://policylayer.com/tools/hermoso.md
- Homepage: git+https://github.com/hermoso-ai/hermoso.git
- Risk category: Read (Low risk)
- Registry record: grade D, identity unverified
- Server auth posture: gated
- Server CORS policy: *
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Allowed

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_apple_ads_keywords",
    "arguments": {}
  }
}
```

## Why list_apple_ads_keywords is rated Low

Even though list_apple_ads_keywords only reads data, uncontrolled read access leaks sensitive information and racks up API costs: an agent caught in a retry loop can make thousands of calls a minute without anyone noticing.

Risk signals: Bulk/mass operation — affects multiple targets

## Use case

AI agents call list_apple_ads_keywords to retrieve information from Hermoso without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.

## Recommended policy (PolicyLayer)

Verdict: **Allowed**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Hermoso:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "list_apple_ads_keywords": {}
  }
}
```

## Other tools on Hermoso (895)

- `answer_google_business_question` — Destructive — https://policylayer.com/tools/hermoso/answer-google-business-question.md
- `apple_ads_change_history` — Destructive — https://policylayer.com/tools/hermoso/apple-ads-change-history.md
- `associate_linkedin_conversion_campaigns` — Destructive — https://policylayer.com/tools/hermoso/associate-linkedin-conversion-campaigns.md
- `cancel_openai_ads_audience_operation` — Destructive — https://policylayer.com/tools/hermoso/cancel-openai-ads-audience-operation.md
- `cancel_scheduled` — Destructive — https://policylayer.com/tools/hermoso/cancel-scheduled.md
- `cancel_stripe_subscription` — Destructive — https://policylayer.com/tools/hermoso/cancel-stripe-subscription.md
- `clear_sheet_range` — Destructive — https://policylayer.com/tools/hermoso/clear-sheet-range.md
- `create_analytics_custom_dimension` — Destructive — https://policylayer.com/tools/hermoso/create-analytics-custom-dimension.md
- `create_openai_ads_campaign` — Destructive — https://policylayer.com/tools/hermoso/create-openai-ads-campaign.md
- `delete_analytics_key_event` — Destructive — https://policylayer.com/tools/hermoso/delete-analytics-key-event.md
- `delete_apple_ads_object` — Destructive — https://policylayer.com/tools/hermoso/delete-apple-ads-object.md
- `delete_bluesky_post` — Destructive — https://policylayer.com/tools/hermoso/delete-bluesky-post.md
- `delete_brand` — Destructive — https://policylayer.com/tools/hermoso/delete-brand.md
- `delete_creator` — Destructive — https://policylayer.com/tools/hermoso/delete-creator.md
- `delete_dm_automation` — Destructive — https://policylayer.com/tools/hermoso/delete-dm-automation.md
- `delete_drive_file` — Destructive — https://policylayer.com/tools/hermoso/delete-drive-file.md
- `delete_google_ads_object` — Destructive — https://policylayer.com/tools/hermoso/delete-google-ads-object.md
- `delete_google_business_post` — Destructive — https://policylayer.com/tools/hermoso/delete-google-business-post.md
- `delete_instagram_dm_automation` — Destructive — https://policylayer.com/tools/hermoso/delete-instagram-dm-automation.md
- `delete_linkedin_ads_object` — Destructive — https://policylayer.com/tools/hermoso/delete-linkedin-ads-object.md
- `delete_linkedin_comment` — Destructive — https://policylayer.com/tools/hermoso/delete-linkedin-comment.md
- `delete_linkedin_lead_subscription` — Destructive — https://policylayer.com/tools/hermoso/delete-linkedin-lead-subscription.md
- `delete_merchant_data_source` — Destructive — https://policylayer.com/tools/hermoso/delete-merchant-data-source.md
- `delete_merchant_product` — Destructive — https://policylayer.com/tools/hermoso/delete-merchant-product.md
- `delete_messenger_marketing_campaign` — Destructive — https://policylayer.com/tools/hermoso/delete-messenger-marketing-campaign.md
- `delete_meta_audience` — Destructive — https://policylayer.com/tools/hermoso/delete-meta-audience.md
- `delete_meta_catalog` — Destructive — https://policylayer.com/tools/hermoso/delete-meta-catalog.md
- `delete_meta_object` — Destructive — https://policylayer.com/tools/hermoso/delete-meta-object.md
- `delete_microsoft_ads_object` — Destructive — https://policylayer.com/tools/hermoso/delete-microsoft-ads-object.md
- `delete_microsoft_merchant_product` — Destructive — https://policylayer.com/tools/hermoso/delete-microsoft-merchant-product.md
- …and 865 more: https://policylayer.com/tools/hermoso.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=hermoso · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/hermoso
