This is the operating view of the canonical tools — purpose, when to call, key inputs, notes. For the exact parameter tables and return shapes, see the full Vertical tool list.
Prefer the canonical vertical_* names. The feed_* names (feed_card, feed_search, feed_compare, feed_brand_resolve, feed_index_list) and the older list_lookups / market_density / read_know_how are deprecated aliases that map 1:1 onto the tools below.Federated on the main server the tools are namespaced vertical__vertical_*; on the standalone endpoint /api/mcp/watchinside they carry their bare names (vertical_*).
vertical_legend
Purpose — the live capability manifest. Channels, benchmarks, lookups, the full signal catalog (each signal’s how_to_read, an example_question, its grain and window), the bootstrap article ids, and live counts.
When to call — first, and whenever you are unsure what exists or which signal_type to filter on. This is the authoritative runtime map.
Notes — read counts and coverage from here live; never carry a remembered figure. The legend also names the getting_started and agent_rules articles to load via vertical_knowhow.
vertical_resolve
Purpose — turn a free-text name into a canonical entity_id.
When to call — required whenever the input is a brand name, handle, domain, partial, or otherwise ambiguous. Every card/compare/search-by-entity flow starts here.
Key inputs — query (name or fragment); optional limit.
Notes — on failure, do not invent an id. Try a cleaner form of the name, and if it is still ambiguous, explain the ambiguity and surface the candidates rather than picking silently.
vertical_card
Purpose — the complete intelligence card for one entity: curated signals across all channels plus entity attributes.
When to call — any “tell me about one entity” question. For 2+ entities use vertical_compare instead.
Key inputs — entity_id; optional period (strict cut), channel (filter to one channel from the legend), include_details (source refs).
Notes — the default favors completeness, so different signals may carry different period_keys. Because of that, never call a default card “all data from quarter X” — it is the newest available per channel, not a single aligned period. Use period= when you need one strict period, and channel= to focus.
vertical_search
Purpose — cross-entity / cross-signal search over the feed — the “which brands…” tool.
When to call — market-discovery questions: filter by signal_type, or free-text over headlines.
Key inputs — optional signal_type, channel, entity_id, period_from / period_to, text.
Notes — prefer a structured signal_type over free text whenever one exists; text search is the fallback, not the default.
vertical_compare
Purpose — 2–6 entities in a single call, with aligned signals.
When to call — every multi-entity comparison. Never loop vertical_card per entity.
Key inputs — entity_ids (2–6, names or ids); optional signal_types for a focused comparison (e.g. growth, launch, or reviewer perception), channel, period.
Notes — start from coverage differences; a missing signal for one entity is “not tracked”, not “weak”.
vertical_benchmark
Purpose — non-entity market aggregates — the “what is normal” numbers.
When to call — density and industry-pulse questions, e.g. market_density with a dimension_filter like {"country":"X"}, or industry_pulse.
Key inputs — name (benchmark name from the legend); optional dimension_filter, period_from / period_to.
Notes — always explain what the benchmark measures. In particular, market_density is paid-media competitive density — not market share.
vertical_knowhow
Purpose — the editorial layer: guides, playbooks, and interpretation rules.
When to call — for method and framing, and for the mandatory first-use bootstrap.
Key inputs — article_id (fetch one) or query (keyword filter).
Notes — data ≠ playbook. Load getting_started and agent_rules by the ids the legend advertises before advisory work.
vertical_lookups
Purpose — the controlled vocabulary: countries, brand_tiers, segments, platforms, and other reference values.
When to call — whenever you need a valid value for a filter or want to confirm the allowed set.
Key inputs — optional lookup_name to restrict to one lookup.
Notes — never invent a lookup value. Use only what the lookup returns.