← AdzviserCONTENT HISTORY

Update to Adzviser

Snapshot Oct 27, 2026 · 06:06 UTC · version 5.0.0

Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED

Instructions updated for adzviser-preview-ui-mode

Skill instructions — Now says: ## Reporting scope Use the source-specific discovery tools to choose fields and request keys. The all-in-one connection supports multiple sources in one...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Adzviser and check future changes in Following.

Up to 10 plugins free · no card required.

All fields and original values.

Skill instructions

Before

Sep 30, 2026 · 22:52 UTC

No removed lines (ordering may have changed)

After

Oct 27, 2026 · 06:06 UTC

## Reporting scope Use the source-specific discovery tools to choose fields and request keys. The all-in-one connection supports multiple sources in one request; include only the sources the user requested. The plugin retrieves reports a...

Supporting files

Before

Sep 30, 2026 · 22:52 UTC

[{"relative_path":"agents/openai.yaml","size_in_bytes":239}]

After

Oct 27, 2026 · 06:06 UTC

[{"relative_path":"agents/openai.yaml","size_in_bytes":247}]

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -7,6 +7,12 @@
 
 Prepare a valid reporting request and open the Adzviser component once so the user can inspect or edit it interactively inside ChatGPT.
 
+## Reporting scope
+
+Use the source-specific discovery tools to choose fields and request keys. The all-in-one connection supports multiple sources in one request; include only the sources the user requested.
+
+The plugin retrieves reports and manages their preview. It cannot change advertising budgets or bids, publish ads, delete analytics data, modify store orders, or issue refunds. Explain these limits when asked for those actions; do not call reporting tools as a substitute or claim a change occurred.
+
 ## Route to the preview tool
 
 - Call `preview_and_retrieve_reporting_data` only for this workflow.
Full technical diff · 2 changed fields

changed /included_files

BEFORE
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 239
  }
]
AFTER
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 247
  }
]

changed /skill_md_contents

BEFORE
"---\nname: adzviser-preview-ui-mode\ndescription: Open Adzviser's interactive embedded report preview in ChatGPT so the user can inspect, edit, or run a reporting request in the widget. Use only when the user explicitly asks for Preview UI, UI Mode, an interactive or embedded report, a report builder, or a chance to review or edit the request before running it. Do not use for raw rows, Data Mode, audits, calculations, comparisons, or programmatic analysis.\n---\n\n# Adzviser Preview UI Mode\n\nPrepare a valid reporting request and open the Adzviser component once so the user can inspect or edit it interactively inside ChatGPT.\n\n## Route to the preview tool\n\n- Call `preview_and_retrieve_reporting_data` only for this workflow.\n- Do not call it merely because the user says “show me” when the task requires ChatGPT to inspect numbers. Use `retrieve_reporting_data` for analysis, audits, raw rows, calculations, comparisons, and `reporting_mode=data`.\n- Treat `reporting_mode=ui` as user intent that selects the preview tool; it is not an argument to send.\n- Never send `client_id`, `reporting_mode`, or `_widget_action`. Never call `set_reporting_mode`; that is an app-only preference control used by the component.\n- If a user asks for both an analysis and an interactive report, use Data Mode for the analysis and open Preview UI only as a separate, explicitly requested deliverable.\n\n## Follow the preview workflow\n\n1. Identify the requested data sources, measures, dimensions, time window, and comparison periods. Ask one concise question only when a missing choice would materially change the report.\n2. Resolve relative dates from the current date available to ChatGPT. Pass inclusive `[start_date, end_date]` pairs in `YYYY-MM-DD` format. Never copy a fixed “today” date from an example.\n3. Call `list_workspace`. Use a user-named workspace when it exists. Otherwise auto-select only when one workspace unambiguously contains every requested connected source; ask when multiple candidates remain.\n4. For every requested source, call its `list_metrics_and_breakdowns_*` tool and use the exact returned field names.\n5. Build one `adzviser_request` with `workspace_name`, `date_ranges`, optional `time_granularity`, and an `assorted_requests` object containing only the requested sources.\n6. Call `preview_and_retrieve_reporting_data` exactly once with `{ \"adzviser_request\": ... }`.\n7. Briefly tell the user that the interactive report is ready. Do not invent results or claim that the preview response already contains report rows.\n\n## Compose valid requests\n\n- `assorted_requests` must be an object, never an array.\n- Include only requested sources. Do not add empty source requests.\n- Each ordinary source request must contain `metrics`; include `breakdowns` only when useful.\n- Keep at least one requested metric or breakdown for every included source.\n- Do not put Date, Week, Month, Quarter, or Year in `breakdowns`; use `time_granularity` instead.\n- Use multiple date-range pairs when the user wants distinct comparison periods.\n\nExample shape:\n\n```json\n{\n  \"adzviser_request\": {\n    \"workspace_name\": \"Workspace Name\",\n    \"date_ranges\": [[\"2026-08-01\", \"2026-08-20\"]],\n    \"assorted_requests\": {\n      \"google_ads_request\": {\n        \"metrics\": [\"Cost\", \"Conversions\"],\n        \"breakdowns\": [\"Campaign Name\"]\n      }\n    }\n  }\n}\n```\n\nThe field labels above illustrate structure only. Always obtain valid labels from the corresponding discovery tool.\n\n## Respect ChatGPT's component lifecycle\n\n- Calling the preview tool mounts the iframe because the tool descriptor is statically associated with a UI resource. This is why the raw-data path must use a different tool.\n- The preview response contains configuration for the component, not the final reporting rows. Do not analyze it as campaign performance.\n- The component can call reporting tools through the MCP Apps bridge. Let it handle its own Run and mode-toggle interactions; do not duplicate those calls from the conversation.\n- In UI Mode, the rows may stay inside the component for visual inspection. Do not claim to have analyzed rows that were never published to the model.\n- If the user switches the component to Data Mode, it can publish model-visible reporting data and send a follow-up message. Analyze those newly supplied rows directly; do not rerun the same report unless the data is absent or the user changes the request.\n- `structuredContent` is visible to ChatGPT. `_meta` is component-only and hidden from the model; never rely on `_meta` for conclusions.\n- Do not ask the user to confirm or rerun immediately after the preview opens. The component already provides its own controls.\n\n## Handle problems without changing modes\n\n- If the workspace is unavailable, report what `list_workspace` returned and ask the user to choose or connect the needed source.\n- Different ChatGPT and advertising-account email addresses do not by themselves prove an authentication problem. Use the connected Adzviser workspace shown by the tools as the authorization context.\n- If a metric or breakdown is rejected, refresh the corresponding discovery tool, correct the request once, and retry.\n- If the user changes the request to raw data or analysis, stop this workflow and use `retrieve_reporting_data`; do not pass a Data Mode flag to the preview tool.\n"
AFTER
"---\nname: adzviser-preview-ui-mode\ndescription: Open Adzviser's interactive embedded report preview in ChatGPT so the user can inspect, edit, or run a reporting request in the widget. Use only when the user explicitly asks for Preview UI, UI Mode, an interactive or embedded report, a report builder, or a chance to review or edit the request before running it. Do not use for raw rows, Data Mode, audits, calculations, comparisons, or programmatic analysis.\n---\n\n# Adzviser Preview UI Mode\n\nPrepare a valid reporting request and open the Adzviser component once so the user can inspect or edit it interactively inside ChatGPT.\n\n## Reporting scope\n\nUse the source-specific discovery tools to choose fields and request keys. The all-in-one connection supports multiple sources in one request; include only the sources the user requested.\n\nThe plugin retrieves reports and manages their preview. It cannot change advertising budgets or bids, publish ads, delete analytics data, modify store orders, or issue refunds. Explain these limits when asked for those actions; do not call reporting tools as a substitute or claim a change occurred.\n\n## Route to the preview tool\n\n- Call `preview_and_retrieve_reporting_data` only for this workflow.\n- Do not call it merely because the user says “show me” when the task requires ChatGPT to inspect numbers. Use `retrieve_reporting_data` for analysis, audits, raw rows, calculations, comparisons, and `reporting_mode=data`.\n- Treat `reporting_mode=ui` as user intent that selects the preview tool; it is not an argument to send.\n- Never send `client_id`, `reporting_mode`, or `_widget_action`. Never call `set_reporting_mode`; that is an app-only preference control used by the component.\n- If a user asks for both an analysis and an interactive report, use Data Mode for the analysis and open Preview UI only as a separate, explicitly requested deliverable.\n\n## Follow the preview workflow\n\n1. Identify the requested data sources, measures, dimensions, time window, and comparison periods. Ask one concise question only when a missing choice would materially change the report.\n2. Resolve relative dates from the current date available to ChatGPT. Pass inclusive `[start_date, end_date]` pairs in `YYYY-MM-DD` format. Never copy a fixed “today” date from an example.\n3. Call `list_workspace`. Use a user-named workspace when it exists. Otherwise auto-select only when one workspace unambiguously contains every requested connected source; ask when multiple candidates remain.\n4. For every requested source, call its `list_metrics_and_breakdowns_*` tool and use the exact returned field names.\n5. Build one `adzviser_request` with `workspace_name`, `date_ranges`, optional `time_granularity`, and an `assorted_requests` object containing only the requested sources.\n6. Call `preview_and_retrieve_reporting_data` exactly once with `{ \"adzviser_request\": ... }`.\n7. Briefly tell the user that the interactive report is ready. Do not invent results or claim that the preview response already contains report rows.\n\n## Compose valid requests\n\n- `assorted_requests` must be an object, never an array.\n- Include only requested sources. Do not add empty source requests.\n- Each ordinary source request must contain `metrics`; include `breakdowns` only when useful.\n- Keep at least one requested metric or breakdown for every included source.\n- Do not put Date, Week, Month, Quarter, or Year in `breakdowns`; use `time_granularity` instead.\n- Use multiple date-range pairs when the user wants distinct comparison periods.\n\nExample shape:\n\n```json\n{\n  \"adzviser_request\": {\n    \"workspace_name\": \"Workspace Name\",\n    \"date_ranges\": [[\"2026-08-01\", \"2026-08-20\"]],\n    \"assorted_requests\": {\n      \"google_ads_request\": {\n        \"metrics\": [\"Cost\", \"Conversions\"],\n        \"breakdowns\": [\"Campaign Name\"]\n      }\n    }\n  }\n}\n```\n\nThe field labels above illustrate structure only. Always obtain valid labels from the corresponding discovery tool.\n\n## Respect ChatGPT's component lifecycle\n\n- Calling the preview tool mounts the iframe because the tool descriptor is statically associated with a UI resource. This is why the raw-data path must use a different tool.\n- The preview response contains configuration for the component, not the final reporting rows. Do not analyze it as campaign performance.\n- The component can call reporting tools through the MCP Apps bridge. Let it handle its own Run and mode-toggle interactions; do not duplicate those calls from the conversation.\n- In UI Mode, the rows may stay inside the component for visual inspection. Do not claim to have analyzed rows that were never published to the model.\n- If the user switches the component to Data Mode, it can publish model-visible reporting data and send a follow-up message. Analyze those newly supplied rows directly; do not rerun the same report unless the data is absent or the user changes the request.\n- `structuredContent` is visible to ChatGPT. `_meta` is component-only and hidden from the model; never rely on `_meta` for conclusions.\n- Do not ask the user to confirm or rerun immediately after the preview opens. The component already provides its own controls.\n\n## Handle problems without changing modes\n\n- If the workspace is unavailable, report what `list_workspace` returned and ask the user to choose or connect the needed source.\n- Different ChatGPT and advertising-account email addresses do not by themselves prove an authentication problem. Use the connected Adzviser workspace shown by the tools as the authorization context.\n- If a metric or breakdown is rejected, refresh the corresponding discovery tool, correct the request once, and retry.\n- If the user changes the request to raw data or analysis, stop this workflow and use `retrieve_reporting_data`; do not pass a Data Mode flag to the preview tool.\n"
Full snapshot data
{
  "description": "Open Adzviser's interactive embedded report preview in ChatGPT so the user can inspect, edit, or run a reporting request in the widget. Use only when the user explicitly asks for Preview UI, UI Mode, an interactive or embedded report, a report builder, or a chance to review or edit the request before running it. Do not use for raw rows, Data Mode, audits, calculations, comparisons, or programmatic analysis.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 247
    }
  ],
  "name": "adzviser-preview-ui-mode",
  "skill_md_contents": "---\nname: adzviser-preview-ui-mode\ndescription: Open Adzviser's interactive embedded report preview in ChatGPT so the user can inspect, edit, or run a reporting request in the widget. Use only when the user explicitly asks for Preview UI, UI Mode, an interactive or embedded report, a report builder, or a chance to review or edit the request before running it. Do not use for raw rows, Data Mode, audits, calculations, comparisons, or programmatic analysis.\n---\n\n# Adzviser Preview UI Mode\n\nPrepare a valid reporting request and open the Adzviser component once so the user can inspect or edit it interactively inside ChatGPT.\n\n## Reporting scope\n\nUse the source-specific discovery tools to choose fields and request keys. The all-in-one connection supports multiple sources in one request; include only the sources the user requested.\n\nThe plugin retrieves reports and manages their preview. It cannot change advertising budgets or bids, publish ads, delete analytics data, modify store orders, or issue refunds. Explain these limits when asked for those actions; do not call reporting tools as a substitute or claim a change occurred.\n\n## Route to the preview tool\n\n- Call `preview_and_retrieve_reporting_data` only for this workflow.\n- Do not call it merely because the user says “show me” when the task requires ChatGPT to inspect numbers. Use `retrieve_reporting_data` for analysis, audits, raw rows, calculations, comparisons, and `reporting_mode=data`.\n- Treat `reporting_mode=ui` as user intent that selects the preview tool; it is not an argument to send.\n- Never send `client_id`, `reporting_mode`, or `_widget_action`. Never call `set_reporting_mode`; that is an app-only preference control used by the component.\n- If a user asks for both an analysis and an interactive report, use Data Mode for the analysis and open Preview UI only as a separate, explicitly requested deliverable.\n\n## Follow the preview workflow\n\n1. Identify the requested data sources, measures, dimensions, time window, and comparison periods. Ask one concise question only when a missing choice would materially change the report.\n2. Resolve relative dates from the current date available to ChatGPT. Pass inclusive `[start_date, end_date]` pairs in `YYYY-MM-DD` format. Never copy a fixed “today” date from an example.\n3. Call `list_workspace`. Use a user-named workspace when it exists. Otherwise auto-select only when one workspace unambiguously contains every requested connected source; ask when multiple candidates remain.\n4. For every requested source, call its `list_metrics_and_breakdowns_*` tool and use the exact returned field names.\n5. Build one `adzviser_request` with `workspace_name`, `date_ranges`, optional `time_granularity`, and an `assorted_requests` object containing only the requested sources.\n6. Call `preview_and_retrieve_reporting_data` exactly once with `{ \"adzviser_request\": ... }`.\n7. Briefly tell the user that the interactive report is ready. Do not invent results or claim that the preview response already contains report rows.\n\n## Compose valid requests\n\n- `assorted_requests` must be an object, never an array.\n- Include only requested sources. Do not add empty source requests.\n- Each ordinary source request must contain `metrics`; include `breakdowns` only when useful.\n- Keep at least one requested metric or breakdown for every included source.\n- Do not put Date, Week, Month, Quarter, or Year in `breakdowns`; use `time_granularity` instead.\n- Use multiple date-range pairs when the user wants distinct comparison periods.\n\nExample shape:\n\n```json\n{\n  \"adzviser_request\": {\n    \"workspace_name\": \"Workspace Name\",\n    \"date_ranges\": [[\"2026-08-01\", \"2026-08-20\"]],\n    \"assorted_requests\": {\n      \"google_ads_request\": {\n        \"metrics\": [\"Cost\", \"Conversions\"],\n        \"breakdowns\": [\"Campaign Name\"]\n      }\n    }\n  }\n}\n```\n\nThe field labels above illustrate structure only. Always obtain valid labels from the corresponding discovery tool.\n\n## Respect ChatGPT's component lifecycle\n\n- Calling the preview tool mounts the iframe because the tool descriptor is statically associated with a UI resource. This is why the raw-data path must use a different tool.\n- The preview response contains configuration for the component, not the final reporting rows. Do not analyze it as campaign performance.\n- The component can call reporting tools through the MCP Apps bridge. Let it handle its own Run and mode-toggle interactions; do not duplicate those calls from the conversation.\n- In UI Mode, the rows may stay inside the component for visual inspection. Do not claim to have analyzed rows that were never published to the model.\n- If the user switches the component to Data Mode, it can publish model-visible reporting data and send a follow-up message. Analyze those newly supplied rows directly; do not rerun the same report unless the data is absent or the user changes the request.\n- `structuredContent` is visible to ChatGPT. `_meta` is component-only and hidden from the model; never rely on `_meta` for conclusions.\n- Do not ask the user to confirm or rerun immediately after the preview opens. The component already provides its own controls.\n\n## Handle problems without changing modes\n\n- If the workspace is unavailable, report what `list_workspace` returned and ask the user to choose or connect the needed source.\n- Different ChatGPT and advertising-account email addresses do not by themselves prove an authentication problem. Use the connected Adzviser workspace shown by the tools as the authorization context.\n- If a metric or breakdown is rejected, refresh the corresponding discovery tool, correct the request once, and retry.\n- If the user changes the request to raw data or analysis, stop this workflow and use `retrieve_reporting_data`; do not pass a Data Mode flag to the preview tool.\n"
}

SHA-256 of public snapshot: 4beec1a1eeface7b0ce1e2a7d946c3dc01c8edaec7b8d6717c83e9ac95e24290