Skip to main content
Glama

List daily metrics

well_list_daily_metrics
Read-only

Read the daily figures a connected source reported: ad spend, impressions and clicks per campaign, ad set or ad; visits (sessions) and page views per landing page; impressions, clicks and the sum of positions per search query; item views and units purchased per product. Pass one grain_kind and a day range; each row is one metric value of one subject on one day, newest day first.

Never add values of two grains, and never add a metric across its own rows unless the catalog calls it additive: url_sessions is a denominator (one session sees many URLs). Averages and ratios are not stored: compute an average position as the sum of search_sum_position divided by the sum of search_impressions, a click rate as clicks divided by impressions. device, country and traffic_channel are null on a row that is not split by them: do not add a null-split row to the split rows of the same subject and day, or the day counts twice. ad_conversions_provider_claimed, ad_sales_value_provider_claimed, key_events_provider_claimed and items_purchased are what the source claims, never revenue: revenue comes from the store's own orders. A money value carries its currency; never add two currencies.

Each source in sources gives synced_at, its last successful sync, and fresh_enough, true when that sync is within the last 24 hours. When a source is not fresh enough, say its figures may be old, and offer well_request_sync with its source_workspace_connector_id. has_more is true when the page is full: narrow the range or the metrics, or say the list is cut, before you state a total.

When the token authorizes one workspace, call this directly — no workspace call is needed first. When it authorizes several, this read will not guess which one you mean: pass workspace_id on the call.

Input Schema

NameRequiredDescriptionDefault
limitNoRows to return, at most 500. Default 200.
metricsNoOnly these metric codes, each of the chosen grain. Every metric of the grain when absent.
to_dateYesThe last day; at most 400 days after from_date, as YYYY-MM-DD, included.
from_dateYesThe first day, as YYYY-MM-DD, included.
grain_kindYesWhich figures to read: project_day (campaigns, ad sets, ads), page_day (web pages), query_day (search queries) or product_day (products). One grain per call: never add figures of two grains.
product_idNoOn product_day: only this product, from well_list_products.
project_idNoOn project_day: only this campaign, ad set or ad, from well_list_projects.
workspace_idNoTarget workspace. Omit when the token authorizes one workspace. Required when it authorizes several: this read reports one workspace's own figures and will not choose which.
conversation_idNoThe conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation.
workspace_scopeNoRestrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace.

Output Schema

NameRequiredDescriptionDefault
rowsNo
errorNo
sourcesNo
successYes
has_moreNo
conversation_idNoThe conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation.
newly_connectedNoTools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: "<name> is connected.". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later.
resolved_workspaceNoThe workspace that answered, when the caller named none and the token authorizes several.
conversation_id_noteNoPresent only when the server opened a fresh lane, stating that no choice recorded earlier was read.
conversation_id_sourceNoWhere the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / metrics / items / enum
      Previous value: -[
      -  "ad_spend",
      -  "ad_impressions",
      -  "ad_clicks",
      -  "ad_conversions_provider_claimed",
      -  "email_deliveries",
      -  "email_opens",
      -  "email_clicks",
      -  "visits",
      -  "engaged_sessions",
      -  "page_views",
      -  "key_events_provider_claimed",
      -  "url_sessions",
      -  "search_impressions",
      -  "search_clicks",
      -  "search_sum_position",
      -  "item_views",
      -  "items_added_to_cart",
      -  "items_purchased"
      -]New value: +[
      +  "ad_spend",
      +  "ad_impressions",
      +  "ad_clicks",
      +  "ad_conversions_provider_claimed",
      +  "ad_sales_value_provider_claimed",
      +  "email_deliveries",
      +  "email_opens",
      +  "email_clicks",
      +  "visits",
      +  "engaged_sessions",
      +  "page_views",
      +  "key_events_provider_claimed",
      +  "url_sessions",
      +  "search_impressions",
      +  "search_clicks",
      +  "search_sum_position",
      +  "item_views",
      +  "items_added_to_cart",
      +  "items_purchased"
      +]
    • changedInput schema / properties / metrics / maxItems
      Previous value: -18New value: +19
    • changedOutput schema / properties / rows / items / properties / metric_code / enum
      Previous value: -[
      -  "ad_spend",
      -  "ad_impressions",
      -  "ad_clicks",
      -  "ad_reach",
      -  "ad_conversions_provider_claimed",
      -  "email_deliveries",
      -  "email_opens",
      -  "email_clicks",
      -  "visits",
      -  "engaged_sessions",
      -  "page_views",
      -  "page_users",
      -  "visitors",
      -  "key_events_provider_claimed",
      -  "url_sessions",
      -  "search_impressions",
      -  "search_clicks",
      -  "search_sum_position",
      -  "item_views",
      -  "items_added_to_cart",
      -  "items_purchased"
      -]New value: +[
      +  "ad_spend",
      +  "ad_impressions",
      +  "ad_clicks",
      +  "ad_reach",
      +  "ad_conversions_provider_claimed",
      +  "ad_sales_value_provider_claimed",
      +  "email_deliveries",
      +  "email_opens",
      +  "email_clicks",
      +  "visits",
      +  "engaged_sessions",
      +  "page_views",
      +  "page_users",
      +  "visitors",
      +  "key_events_provider_claimed",
      +  "url_sessions",
      +  "search_impressions",
      +  "search_clicks",
      +  "search_sum_position",
      +  "item_views",
      +  "items_added_to_cart",
      +  "items_purchased"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / rows / items / properties / metric_code / enum
      Previous value: -[
      -  "ad_spend",
      -  "ad_impressions",
      -  "ad_clicks",
      -  "ad_reach",
      -  "ad_conversions_provider_claimed",
      -  "email_deliveries",
      -  "email_opens",
      -  "email_clicks",
      -  "visits",
      -  "engaged_sessions",
      -  "page_views",
      -  "page_users",
      -  "key_events_provider_claimed",
      -  "url_sessions",
      -  "search_impressions",
      -  "search_clicks",
      -  "search_sum_position",
      -  "item_views",
      -  "items_added_to_cart",
      -  "items_purchased"
      -]New value: +[
      +  "ad_spend",
      +  "ad_impressions",
      +  "ad_clicks",
      +  "ad_reach",
      +  "ad_conversions_provider_claimed",
      +  "email_deliveries",
      +  "email_opens",
      +  "email_clicks",
      +  "visits",
      +  "engaged_sessions",
      +  "page_views",
      +  "page_users",
      +  "visitors",
      +  "key_events_provider_claimed",
      +  "url_sessions",
      +  "search_impressions",
      +  "search_clicks",
      +  "search_sum_position",
      +  "item_views",
      +  "items_added_to_cart",
      +  "items_purchased"
      +]
  3. Added

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a safe, closed-world read, and the description layers substantial non-obvious behavior on top: row shape and ordering (one metric of one subject on one day, newest day first), that averages and ratios are not stored and must be derived from sums, that null device/country/traffic_channel rows must not be added to split rows, that provider_claimed metrics and items_purchased are never revenue, that money values carry currency and must not be summed across currencies, plus sync freshness and has_more pagination semantics. This is exactly the domain-specific caveat context that annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four dense paragraphs, but each is front-loaded with a purpose: what is read, how to aggregate, how to handle freshness and pagination, and how workspace routing works. Every rule earns its place as an anti-error guard, though the grain-mixing prohibition is effectively restated in both the description body and the grain_kind schema, which is mild redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, four-grain read with an output schema, the description covers the points an agent actually needs: grain selection, day-range semantics, derived-metric math, freshness with a follow-up tool, pagination truncation, and multi-workspace authorization. Nothing an agent needs in order to call it correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning: it explains what each grain_kind yields, warns that mixing grains is invalid, treats url_sessions as a denominator, and clarifies workspace_id behavior (omit for single-workspace tokens) beyond the schema's own wording. Field-level syntax details (limit ceiling, date format, UUID patterns) are correctly left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a concrete verb ("Read") and enumerates the exact resources per grain: ad spend/impressions/clicks per campaign, ad set or ad; visits and page views per landing page; impressions, clicks and position sums per query; item views and units purchased per product. That is far more specific than the title. It does not, however, differentiate against the overlapping siblings that exist in the catalog (well_get_ad_performance, well_get_search_performance), so an agent cannot tell from this text alone which of those to prefer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage conditions are stated clearly: pass exactly one grain_kind plus a day range, narrow the range or metrics when has_more is true before stating a total, and offer well_request_sync when a source's fresh_enough is false. Workspace routing is also spelled out (call directly when the token is single-workspace, pass workspace_id when several). The one gap is that no exclusion is given against per-performance siblings that return similar ad/search figures.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources