{"id":76960,"plugin_id":"plugin_asdk_app_6a6a442345f88191b23be1e01237d551","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-03T00:11:59.951Z","digest":"087e5604f0d0b2cd04e584af04dbe0a4df8b9c22223dd9372a1acc950a9f1a6b","against":null,"payload":{"description":"Work with connected LoomaScale integrations for Google Ads, Meta Ads (Facebook and Instagram), LinkedIn Ads, Google Analytics 4, Google Search Console, Google Merchant Center and Google Tag Manager. Use to discover accounts, audit performance or tracking, research keywords, diagnose organic search or shopping issues, and carry out requested Google Ads or Meta Ads campaign changes. Use cross-source-insights for detailed performance and attribution analysis.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":558},{"relative_path":"references/advertising.md","size_in_bytes":8313},{"relative_path":"references/measurement-and-commerce.md","size_in_bytes":9717}],"name":"loomascale","skill_md_contents":"---\nname: loomascale\ndescription: Work with connected LoomaScale integrations for Google Ads, Meta Ads (Facebook and Instagram), LinkedIn Ads, Google Analytics 4, Google Search Console, Google Merchant Center and Google Tag Manager. Use to discover accounts, audit performance or tracking, research keywords, diagnose organic search or shopping issues, and carry out requested Google Ads or Meta Ads campaign changes. Use cross-source-insights for detailed performance and attribution analysis.\n---\n\n# LoomaScale integration workflows\n\nLoomaScale connects advertising, analytics, organic search, shopping and tracking\ndata through its MCP tools. Use the smallest relevant set of integrations to\nanswer the question or complete the requested action. Google Ads and Meta Ads\nsupport campaign changes; LinkedIn Ads, GA4, Search Console, Merchant Center and\nTag Manager provide read-only reporting and diagnosis.\n\n## Start with the user's task\n\nIdentify the intended result: a report, diagnosis, recommendation, campaign draft\nor authorized change. Reuse the conversation's accounts, dates and business goal.\nDiscover only the resources needed; do not run an account-wide audit for a narrow\nquestion. Ask only for a missing choice that materially affects the result, such\nas which of several client accounts to change.\n\nInspect the available tool descriptions and input schemas before calling them.\nNames below are the server's tool names; a client may add a namespace prefix.\nLive schemas and permissions take precedence over examples in this skill. Do not\ninvent tools, arguments or access to an integration that the client does not expose.\n\n## Which integration answers the question?\n\n| Integration and purpose | Discover the target | Begin with |\n|---|---|---|\n| Google Ads: paid search, Shopping, Performance Max, keywords, budgets and delivery | `gads_list_ad_accounts` | `gads_get_insights`, `gads_list_campaigns`, `gads_list_search_terms`; `gads_check_pacing` for today's delivery |\n| Meta Ads: Facebook/Instagram campaigns, creatives, audiences and delivery | `meta_list_ad_accounts` | `meta_get_insights`, `meta_list_campaigns`, `meta_list_ads`, `meta_get_delivery_issues` |\n| LinkedIn Ads: B2B campaign results, leads and professional demographics | `linkedin_list_ad_accounts` | `linkedin_get_insights`, `linkedin_list_campaigns`, `linkedin_analyze_demographics` |\n| Google Analytics 4 (GA4): website traffic, business events, revenue and funnels | `ga4_get_account_summaries` | `ga4_get_property_details`, then the appropriate report |\n| Google Search Console (GSC): organic queries, pages, search visibility and indexing | `gsc_list_sites` | `gsc_compare_periods`, `gsc_query_search_analytics`, opportunity tools or `gsc_inspect_url` |\n| Google Merchant Center (GMC): product eligibility, account issues and shopping performance | `gmc_list_accounts` | `gmc_get_account_health`, then `gmc_query` |\n| Google Tag Manager (GTM): published tracking configuration and pending changes | `gtm_list_containers` | `gtm_get_container`, `gtm_audit_tracking`, `gtm_get_workspace_status` |\n\nRead only the guide needed for the task:\n\n- [Advertising workflows](references/advertising.md): paid performance, keyword\n  research, creative review, campaign creation and authorized changes.\n- [Measurement, search and commerce](references/measurement-and-commerce.md): GA4\n  report selection, Search Console diagnostics, Merchant Center MCQL and GTM audits.\n- [Cross-source insights](../cross-source-insights/SKILL.md): explain changing\n  results, compare channels, diagnose attribution and ground every custom Google\n  Ads GAQL query in live metadata. This can also answer a single-source question.\n\n## Resolve accounts once and carry their IDs forward\n\nUse explicit discovered targets on subsequent calls. Preserve IDs as strings.\n\n| Integration | Target argument and form |\n|---|---|\n| Google Ads | `customer_id`: serving client ID, digits without dashes; a manager/MCC holds no campaigns |\n| Meta Ads | `ad_account_id`: discovered `act_...` account ID; check returned manage access before changes |\n| LinkedIn Ads | `ad_account_id`: discovered numeric account ID |\n| GA4 | `property_id`: property number or `properties/<number>` |\n| Search Console | `site_url`: exact `sc-domain:example.com` or URL-prefix property, preserving its slash |\n| Merchant Center | `account_id`: numeric standalone/sub-account ID; an advanced account itself has no reports |\n| Tag Manager | `container`: discovered `GTM-...` ID or API resource path |\n\nDo not call `gads_select_account`, `meta_select_account` or\n`linkedin_select_account` merely to scope a report: they change a persistent\ndefault shared across chats. Use them only when changing that default is the task.\nRespect resources switched off in the dashboard; do not bypass a disabled target\nwith an alternate ID. A partial discovery result is not proof that no accounts exist.\n\nFor \"what is connected?\", use the relevant per-integration discovery tools; there\nis no unified connection-list tool. If a full inventory was requested, run the\navailable discovery reads independently and summarize reachable resources and\naccess errors. An empty resource list or absent tool does not establish that a\ndashboard connection is missing. Distinguish disconnected, disabled, inaccessible,\nstill-discovering and unavailable states using the evidence returned.\n\n## Keep reads efficient and results comparable\n\nFor historical analysis without a supplied period, use the last 30 complete days\nand a preceding equal-length comparison, stating the dates. For Search Console,\nuse its finalized window (normally ending three Pacific days ago); for a direct\ncross-source comparison use that same end date for the other reports. Honor\nexplicit dates, today's pacing requests and realtime questions. Read each tool's\ndate schema instead of copying arguments across platforms.\n\nStart with totals, then investigate material changes. Parallelize independent\nreads only after resolving their targets. Fetch required pages or disclose partial\ncoverage; never present a row-limited ranking as an exhaustive account total.\nKeep currencies and attribution definitions distinct. Platform conversions, GA4\noutcomes and organic search clicks are different measures. The cross-source guide\nprovides the matching and aggregation rules when combining them.\n\n## Complete changes within the user's authorization\n\nAnalysis and recommendations do not authorize campaign changes. For a requested\nchange, read current state, resolve the precise target and budget/currency, use\nthe narrowest supported write, and read back the resulting state. Honor existing\nexplicit authorization; do not ask again for the same scope. Prepare any required\nreviewable proposal before asking for a missing decision.\n\nCampaign and ad creation tools create paused objects; activation is a separate\nstep within the user's authorized scope. Existing-object edits and Meta experiment\ncreation can affect live delivery immediately. Follow the advertising guide for\ntargeting defaults, budget ownership, preview flags and safe recovery. Do not\nassume a daily budget cap guarantees total spend across campaigns.\n\n## Recover from blocked or incomplete work\n\n- Missing or expired connection: use the tool's connect/reconnect link, or the\n  [LoomaScale connections dashboard](https://ai.loomascale.com/dashboard/connections).\n  A team member needs their own upstream login. Continue useful authorized reads.\n- Missing tool or access: state the unavailable capability and provide supported\n  partial findings. Do not repeatedly call an unavailable tool.\n- Plan/trial limit: call `loomascale_check_quota` once and explain the reported\n  allowance/reset. Its quota is not an ad budget or account balance.\n- Permission or budget-cap refusal: explain the exact blocker; do not switch\n  accounts, raise caps or shrink the requested action to evade it.\n- Invalid read: use the error and schema to make one evidenced correction, then\n  report the remaining limitation. For GAQL follow the stricter metadata preflight.\n- Timed-out or partially failed write: reconcile current objects and returned IDs\n  before retrying. Repeating a create can duplicate campaigns, ads or experiments.\n\n## Return an actionable result\n\nLead with the answer or completed action. Give the account/property, exact dates,\nevidence and material limitations needed to assess it. For changes, include object\nIDs, verified resulting status/budget and anything still blocked. Distinguish a\nsaved configuration from actual ad delivery or a tag firing in a browser. For\nread-only integrations, give specific fixes and where the user must apply them;\ndo not claim to have edited feeds, requested indexing or published GTM changes.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}