What Vertical is
Vertical is a curated, benchmarked market-intelligence layer sitting on top of the public signals of one business vertical. Where your own data tables hold your orders, customers, and leads, the Vertical layer holds the market around you — the entities that matter in your industry (brands, models, channels), the signals attached to them, and the benchmarks that let you read one number against the whole field. For this tenant the vertical is the watch market — Watch Market Intelligence — whose entities are watch brands. Each vertical connection ships a manifest (the entity label, the channels it tracks, the benchmarks and lookups it offers) that templates every tool, so the same tools describe themselves in the language of whatever vertical you are connected to. It is built for the people and agents who need market context around a decision: which brands are moving, how a competitor compares, what “normal” looks like as a benchmark, and the editorial know-how that explains the numbers. The surface is read-only — there are no write tools, and compliance filtering (insights only) is applied server-side.How it is accessed
Vertical is a federated MCP surface: its tools are namespacedvertical__* and reachable two ways.
- Federated on the main server (
https://app.concierca.ch/api/mcp/v1) under namespaced names:vertical__vertical_card,vertical__vertical_search, … This is the normal path — one connector covers everything, and the tools show up in the server’stools/listalongside your other tools. - Standalone vertical endpoint —
https://app.concierca.ch/api/mcp/watchinside(the watch-market vertical; alias “Vertical”) or the generichttps://app.concierca.ch/api/mcp/vertical/<slug>— where the tools carry their bare names (vertical_card, …).
tools/list on the endpoint, then vertical_legend for the live data catalog.
Common parameter: every tool accepts an optional
vertical (string) — the vertical slug; it defaults to the connection’s own vertical. Periods are quarters, expressed as the quarter start: period_key = YYYY-MM-01.Feed (live market feed)
The feed is the live stream of curated market signals. These fivefeed_* names are the original feed tools — still fully callable — and each maps 1:1 to a vertical_* tool documented below (identical parameters). Prefer the vertical_* names in new integrations; reach for the feed_* names when an existing setup already uses them.
Vertical intelligence
The canonical tool set. The eightvertical_* tools below are the ones to build against; three more legacy aliases (list_lookups, market_density, read_know_how) map onto them and are listed at the end of this section.
vertical_legend
The legend of the insight feed: manifest (channels, benchmarks, lookups), the full signal catalog (what each signal means, how to read it, example questions) and live counts. Call this first when unsure what data exists or which signal_type to filter on.
Returns:
{ manifest, entity_label, entity_label_plural, signal_catalog, live, hint }. signal_catalog is the full signal definition list (channel, meaning, how-to-read, example questions, first/last period); live is { insight_rows, entities, channels, signal_types, period_range: {from, to} | null } derived from the current data.
vertical_resolve
Resolve a free-text entity name to the canonical entity_id. Returns candidates with display name, match score and attributes — master data only. Use the returned entity_id with vertical_card or vertical_search.
Returns:
{ candidates, total, hint }. Each candidate: {entity_id, display_name, match_score, attributes} (match_score 1.0 exact / 0.8 prefix / 0.6 substring). Empty/failed query → { candidates: [], error }.
vertical_card
One entity’s complete insight card for one period: curated snippets (headline + metric) across all channels, plus entity attributes. Start here for any “tell me about one entity” question — for 2+ entities call vertical_compare instead. Defaults to each channel’s newest period. Responses are lean by default.
Returns:
{ entity_id, display_name, attributes, periods, total, snippets }. periods is the per-channel period actually used; snippets are the curated insight rows (headline + metric per channel/signal_type/period — details + source refs included only when include_details:true). An entity with no data → { entity_id, snippets: [], total: 0, note }.
vertical_search
Filtered cross-entity search over the curated insight feed. Filter by channel, signal type (see vertical_legend for valid values), entity, period range, or free text on headlines.
Returns:
{ total, snippets } — the matching curated insight rows across entities (details + source refs only when include_details:true). An unknown signal_type → { snippets: [], error }.
vertical_compare
Competitive pack in one call: lean insight cards (headline + metric) for 2–6 entities side by side. Always use this for multi-entity comparisons — never loop vertical_card per entity.
{ entities, unresolved, truncated? }. entities is one lean card per resolved entity ({input, entity_id, display_name?, periods, total, snippets}); unresolved lists names that did not resolve; truncated lists any names dropped beyond the 6-entity cap.
vertical_benchmark
Non-entity market aggregates (benchmarks) — the “what is normal” numbers you read a single entity against. Filter by dimension (e.g. {"country":"DE"}) and period range. An unknown benchmark name returns an error listing the available names (see vertical_legend).
Returns:
{ total, rows } — benchmark aggregate rows. No match → { rows: [], total: 0, note }; an unknown benchmark name → { rows: [], error, available } where available lists the valid benchmark names.
vertical_knowhow
Read the vertical’s knowledge-base articles (editorial content, not feed data) — the write-ups that explain the market and how to read the signals.
Returns:
{ articles, total } — knowledge-base articles (a single-element array when article_id is given).
vertical_lookups
List reference/lookup values, grouped by lookup name — the controlled vocabularies (channels, signal types, dimensions) the rest of the surface uses.
Returns:
{ lookups, lookup_names } — lookups is an object keyed by lookup name, each holding its reference values; lookup_names is the list of keys present.
