Skip to main content
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 callfirst, 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 callrequired whenever the input is a brand name, handle, domain, partial, or otherwise ambiguous. Every card/compare/search-by-entity flow starts here. Key inputsquery (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 inputsentity_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. 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. Notesprefer a structured signal_type over free text whenever one exists; text search is the fallback, not the default.

vertical_compare

Purpose2–6 entities in a single call, with aligned signals. When to call — every multi-entity comparison. Never loop vertical_card per entity. Key inputsentity_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 inputsname (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 inputsarticle_id (fetch one) or query (keyword filter). Notesdata ≠ 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. Notesnever invent a lookup value. Use only what the lookup returns.