Skip to content

MCP tools reference

Every tool and resource the Odyssey Signal MCP server offers, with the parameters of query and get_map.

The Odyssey Signal MCP server offers 14 tools. You don't call them yourself: you ask a question and the AI picks the tools it needs. This page is for when you want to know what it can do, or why it asked you something. For what the server is, see What the MCP server does.

Every tool only reads data.

Finding your Signals#

ToolWhat it does
list_organizationsLists the organizations whose Signals you can read. Most people see one, their own.
list_signalsLists the Signals you can read, each with its organization. The place to start. Can be narrowed to one organization.
describe_signalShows one Signal: its data sources, the datasets on each and their markets.
list_datasourcesLists the data sources on a Signal.
describe_datasourceShows one data source: its type and its datasets.

Describing a dataset#

The tools below take the ids the earlier tools return: a Signal id, a data source id and, for most, a dataset id.

ToolWhat it does
describe_datasetShows which dimensions can filter and break down a result, the standard period and the other periods allowed, and the languages.
list_metricsLists the metrics in their groups, with what each measures, its unit and what its base counts.
list_dimension_valuesLists the values of one dimension, such as markets or age groups, to filter on. Only values in data you can read are listed.
list_brandsLists the brands a data source carries, grouped by brand list.
list_driversLists the drivers a data source is set up with, grouped by brand list.
list_periodsShows which periods have data, in total and per dataset.

Getting figures: query#

query asks one dataset for figures. Everything except the metrics is optional.

ParameterWhat it does
metrics1 to 25 metric keys from list_metrics.
granularitymonth, quarter, halfyear or year. Left out, the dataset's standard period is used.
endingThe last period: a month as list_periods gives it (2026-09), or 2026-Q3, 2026-H2 or 2026. Default: the latest with data.
lastHow many periods to return, counting back from ending (1 to 120). Above 1, you get one row per period.
rollingA moving average over this many periods, as in the portal: months 1, 3 or 12; quarters 1 to 4; half years and years 1.
complete_onlyLeave out a last period that has not finished yet.
group_byDimensions to break the result down by. Several give a cross-tab.
filtersFor each dimension, the values to keep, from list_dimension_values.
brandsThe brands the answer covers, from list_brands. Rank and the competitor average are computed over exactly these, as in the portal. Default: the Signal's default competitors.
focusYour own brand or brands: always included in the answer.
includeExtra context per row: reference_line (the competitor average, on by default) and rank.
limitThe most rows to return.
Parameters of query

Each answer says what it was run with: the period, and every market, brand and filter value applied. Each row carries its base and any low-base warning.

JSON
{
  "metrics": ["<metric key>"],
  "granularity": "quarter",
  "rolling": 4,
  "group_by": ["<market dimension key>"],
  "include": ["reference_line", "rank"]
}

An example of what the AI sends: one metric, by quarter smoothed over four quarters, broken down by market, with the competitor average and rank. The keys come from describe_dataset and list_metrics.

Getting maps: get_map#

get_map returns one of a dataset's demand-space maps for one period, with everything needed to draw it the way the portal does: each point's position, the sectors and their names, the scale, colours, labels and legend.

ParameterWhat it does
typebrand_position (brands placed on the demand-space map), demand_space_sizes (how large each demand space is) or brand_profile (each brand's strength per demand space).
metricThe metric to draw, from list_metrics. Default: the dataset's first metric of that kind.
driversbrand_position only: add the category's drivers, each sized by its share.
sizesbrand_position only: write each demand space's size in its sector.
brands, focusThe brands to draw, and your own brand, marked as yours.
ending, granularity, rolling, complete_only, filtersThe period and filters, as in query.
themelight (default) or dark.
Parameters of get_map

How to draw a map: get_map_guide#

get_map_guide explains how to draw one type of map: the steps, the fixed values, a reference drawing in JavaScript that turns any get_map answer into an SVG, and a picture of a made-up example. It is the same for every Signal. Its parameters are type, theme, and variant: position_di for a brand position drawn from a Double Index metric.

Resources#

The map guides are also offered as MCP resources, so a tool that supports resources can attach one to a conversation without a tool call:

Text
odyssey-signal://maps/<type>/guide
odyssey-signal://maps/<type>/guide.png
odyssey-signal://maps/brand_position/position_di/guide
odyssey-signal://maps/brand_position/position_di/guide.png

<type> is brand_position, demand_space_sizes or brand_profile. The guide is JSON; the .png is its picture, in the light theme.

Last reviewed 9 November 2026