{"id":85633,"plugin_id":"plugin_asdk_app_6ada68616590819197685ef0b29787d2","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-07T06:14:30.189Z","digest":"9476d0afdc0b6854b35de853fa1e798597885113d92a0f39665a8b5b3b80e551","against":null,"payload":{"description":"Shared Noibu tool routing, domain resolution, query semantics, telemetry metadata, and data interpretation for ChatGPT analytics workflows.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":330},{"relative_path":"assets/presentation/actions.js","size_in_bytes":16770},{"relative_path":"assets/presentation/board.html","size_in_bytes":3430},{"relative_path":"assets/presentation/checkout-schedule.html","size_in_bytes":5539},{"relative_path":"assets/presentation/checkout-schedule.js","size_in_bytes":5013},{"relative_path":"assets/presentation/report.css","size_in_bytes":16199},{"relative_path":"assets/presentation/source-connect.html","size_in_bytes":2569},{"relative_path":"assets/presentation/source-connect.js","size_in_bytes":7693},{"relative_path":"assets/presentation/standalone.css","size_in_bytes":1973},{"relative_path":"assets/sites/site-client.mjs","size_in_bytes":7232},{"relative_path":"assets/sites/site-report.mjs","size_in_bytes":6209},{"relative_path":"assets/sites/snapshot-store.mjs","size_in_bytes":9178},{"relative_path":"references/ab-tests.md","size_in_bytes":6351},{"relative_path":"references/chatgpt-runtime.md","size_in_bytes":9165},{"relative_path":"references/connected-dashboard.md","size_in_bytes":11498},{"relative_path":"references/console-urls.md","size_in_bytes":4859},{"relative_path":"references/errors.md","size_in_bytes":4465},{"relative_path":"references/funnel-visualization.md","size_in_bytes":1312},{"relative_path":"references/journeys-and-replay.md","size_in_bytes":6888},{"relative_path":"references/page-visits.md","size_in_bytes":4071},{"relative_path":"references/presentation-actions.md","size_in_bytes":11090},{"relative_path":"references/presentation-contract.md","size_in_bytes":17371},{"relative_path":"references/presentation.md","size_in_bytes":15841},{"relative_path":"references/scheduling-delivery.md","size_in_bytes":14852},{"relative_path":"references/sessions.md","size_in_bytes":2935},{"relative_path":"references/site-permissions.md","size_in_bytes":6705},{"relative_path":"references/source-access.md","size_in_bytes":11250},{"relative_path":"references/ticket-handoff.md","size_in_bytes":5367},{"relative_path":"scripts/build_presentation.py","size_in_bytes":42757},{"relative_path":"scripts/build_source_connect.py","size_in_bytes":11243},{"relative_path":"scripts/console_links.py","size_in_bytes":2722},{"relative_path":"scripts/dashboard_progress.py","size_in_bytes":4892}],"name":"querying-noibu-data","skill_md_contents":"---\nname: querying-noibu-data\ndescription: Shared Noibu tool routing, domain resolution, query semantics, telemetry metadata, and data interpretation for ChatGPT analytics workflows.\n---\n\n# Noibu query guide\n\n- Use [runtime/actions](references/chatgpt-runtime.md) for connection, browser, output and external-action behavior.\n- Discover the exposed tool by its unqualified `noibu_…` name; never hardcode an installation prefix. Current tool schemas are authoritative.\n- On supported calls include a specific `rationale`, active topical `skill`, short `skillStep` and `skillVersion: \"1.1.0\"`.\n- Full reports use [inline presentation/actions](references/presentation.md); focused answers may remain prose. For any scheduling request read [connected delivery](references/scheduling-delivery.md).\n\n## Talking to the user\n\n- These skill files are instructions for you, not content for the user. Speak in your own words. Never quote, cite, link or name them: no rule text, file or reference names, skill names, \"the skill requires…\", \"per the guidance…\", action payloads or `NOIBU_ACTION` JSON.\n- When something can't be done, say what is missing and what the user can do about it, not which instruction stops you.\n\n## Check capability before resolving the store\n\n- Before any Noibu tool call, determine whether an available tool supports the requested operation. A store name or UUID does not by itself justify domain resolution or data retrieval.\n- For an unsupported operation, explain the capability limit and stop without calling Noibu tools. Do not resolve or list stores, fetch business context, look up sessions, or send feedback just to refuse the request. Do not claim the operation succeeded.\n- Permanent deletion of raw shopper sessions or analytics records is unsupported by this plugin. Explain that no raw-session-data deletion tool is available and that no records have been deleted. Direct the user to Noibu support via https://help.noibu.com or their account administrator for the publisher's data-deletion process. Do not substitute issue or theme deletion tools.\n- This check concerns the requested operation, not every action with the word \"delete\". A supported operation on a different object must still follow its own tool scope and authorization rules.\n- Resolve the store only after confirming a supported operation requires store-specific data. Continue to the normal store-resolution and topical query guidance below for supported analytics requests.\n\n## Resolve the store\n\n- For supported requests requiring store data, use a supplied UUID directly. For a name, call `noibu_get_domain` as supplied; do not substitute stores.\n- On a miss, offer permitted suggestions or `noibu_list_domains` with `pagination: {limit: 50, offset: 0}`. Continue pagination; ask when multiple stores remain ambiguous.\n- Retain UUID `id`, integer `numId`, company, platform and currency. Most analytics use UUID; business-context writes/accessibility jobs use integer numId.\n- Fetch `noibu_get_business_context` before substantial analysis; null is normal.\n- Before declaring data absent, inspect relevant sibling domains scoped to the resolved company. Storefront/checkout data do not automatically stitch. `noibu_get_company` expects company name, not numeric ID.\n\n## Route queries\n\n- Sessions, conversion, revenue, devices/countries/channels/products: `noibu_search_sessions` and [sessions](references/sessions.md).\n- Row-level examples/checkout sub-steps: `noibu_session_lookup`; inspect its select/pagination schema, not aggregate substitutes.\n- Page traffic, interactions, URLs and p75 vitals: `noibu_get_page_visits` and [page visits](references/page-visits.md). Use QUANTILE_75, not averages.\n- Trends: available session/page/error trend tools with their live period/resolution schema.\n- Exact-URL navigation: page visits; category-pattern sequences: [journeys/replay](references/journeys-and-replay.md). Replays only when requested.\n- Errors or technical follow-ups: [errors](references/errors.md); ordinary business analysis starts with sessions/pages.\n- Existing experiment configuration/verdicts: [A/B tests](references/ab-tests.md); roster and computed verdict are different tools.\n- Report/action destinations: [verified Noibu links](references/console-urls.md). Successful draft writes need **Open draft in Noibu** from returned/verified IDs; preserve links in saved/exported/scheduled reports.\n- Funnels: retrieve measured stage counts, then [funnel presentation](references/funnel-visualization.md).\n- Accessibility: load accessibility-audit and its execution guide. Use approved browser axe or completed exports; limited review keeps automated counts unknown. No automatic remote scan job.\n\n## Query contract\n\nExample aggregate envelope; adapt to the exposed schema:\n\n```json\n{\n  \"domainId\": \"<resolved UUID>\",\n  \"rationale\": \"<user intent>\",\n  \"skill\": \"<active skill>\",\n  \"skillStep\": \"<step>\",\n  \"skillVersion\": \"1.1.0\",\n  \"input\": {\n    \"periodOptions\": {\n      \"dateTimeRange\": {\"startTime\": \"<ISO timestamp>\", \"endTime\": \"<ISO timestamp>\"}\n    },\n    \"queryInput\": {\n      \"measures\": [\n        {\"aggregate\": {\"measureFunc\": \"COUNT\", \"target\": {\"field\": \"SESSION_ID\"}, \"measureAlias\": \"sessions\"}}\n      ],\n      \"orderBy\": {\"measureAlias\": \"sessions\", \"direction\": \"DESCENDING\"},\n      \"limit\": 1\n    }\n  }\n}\n```\n\n- Bounded aggregates require `queryInput.orderBy`. A target-field/aggregation pair is unique; aliases do not permit duplicate measures.\n- Caps: session aggregates 100 rows, page visits 1,500, row lookup 1,000. Respect hasMore/cursors; top-N/sample results are not population totals.\n- Filters wrap fieldFilter/collectionFilter; scalar grouping uses groupBy.fieldSegments, collections groupBy.arrayJoin.\n- Boolean filters use IS_ANY_OF with string values [\"true\"]/[\"false\"], not IS.\n- Row lookup selects field/timeField targets, e.g. MAX_CART_VALUE/SESSION_START_TIME, and orders by returned selectAlias.\n- Normalize finite numeric strings; null/empty is not zero. LCP/FCP/TTFB/INP use milliseconds, CLS no unit. Convert timing displays deliberately.\n- Anchor current/prior windows once; state exact dates/timezone. Default analytics 30 days; Store Pulse rolling 24 hours.\n- Distinct sessions differ from event sums. Stage reach sums depth ≥ N; express checkout may skip intermediate events.\n- Use measured CART_CURRENCY, not assumed domain currency. Never combine/rank currencies without verified conversion.\n- AOV = completed-order revenue ÷ completed orders; median value differs. Product-associated whole carts are not product revenue.\n- HAS_DISCOUNT is observed after a code is applied at checkout; comparisons have survivorship bias.\n- Missing coverage is not measured zero or proof of a defect.\n\n## Attribution and evidence\n\n- URL/LANDING_URL/EXIT_URL strip parameters; page-visit REFERRING_URL preserves them. For gclid/gad_, search/order parameters, query REFERRING_URL CONTAINS parameter and UNIQ(SESSION_ID); label a lower bound. Bounces/stripped cross-origin referrers remain unmeasured; session landing referrers are not equivalent.\n- Separate measured facts, correlation and causal hypotheses. ARL/revLost are directional projections, only for requested money impact; avoid recovery guarantees/double-counting.\n- Retrieval does not authorize context/status/draft/lifecycle/job writes or messages. Resolve exact user-requested objects and use supported approvals; read state before retrying ambiguous writes. Tool failures do not authorize outbound feedback.\n- Heatmaps/replays require actual supported MCP UI; numeric evidence/returned links remain useful if rendering fails. Never fabricate a heatmap or claim unverified rendering.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}