> ## Documentation index
> Fetch the complete documentation index at: https://docs.odysseysignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP tools reference

> Every tool and resource the Odyssey Signal MCP server offers, with the parameters of query and get\_map.

Last reviewed 9 November 2026

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](https://docs.odysseysignal.com/mcp/what-the-mcp-server-does).

Every tool only reads data.

## Finding your Signals

| Tool | What it does |
| --- | --- |
| list_organizations | Lists the organizations whose Signals you can read. Most people see one, their own. |
| list_signals | Lists the Signals you can read, each with its organization. The place to start. Can be narrowed to one organization. |
| describe_signal | Shows one Signal: its data sources, the datasets on each and their markets. |
| list_datasources | Lists the data sources on a Signal. |
| describe_datasource | Shows 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.

| Tool | What it does |
| --- | --- |
| describe_dataset | Shows which dimensions can filter and break down a result, the standard period and the other periods allowed, and the languages. |
| list_metrics | Lists the metrics in their groups, with what each measures, its unit and what its base counts. |
| list_dimension_values | Lists the values of one dimension, such as markets or age groups, to filter on. Only values in data you can read are listed. |
| list_brands | Lists the brands a data source carries, grouped by brand list. |
| list_drivers | Lists the drivers a data source is set up with, grouped by brand list. |
| list_periods | Shows which periods have data, in total and per dataset. |

## Getting figures: query

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

| Parameter | What it does |
| --- | --- |
| metrics | 1 to 25 metric keys from list_metrics. |
| granularity | month, quarter, halfyear or year. Left out, the dataset's standard period is used. |
| ending | The last period: a month as list_periods gives it (2026-09), or 2026-Q3, 2026-H2 or 2026. Default: the latest with data. |
| last | How many periods to return, counting back from ending (1 to 120). Above 1, you get one row per period. |
| rolling | A 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_only | Leave out a last period that has not finished yet. |
| group_by | Dimensions to break the result down by. Several give a cross-tab. |
| filters | For each dimension, the values to keep, from list_dimension_values. |
| brands | The 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. |
| focus | Your own brand or brands: always included in the answer. |
| include | Extra context per row: reference_line (the competitor average, on by default) and rank. |
| limit | The 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.

| Parameter | What it does |
| --- | --- |
| type | brand_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). |
| metric | The metric to draw, from list_metrics. Default: the dataset's first metric of that kind. |
| drivers | brand_position only: add the category's drivers, each sized by its share. |
| sizes | brand_position only: write each demand space's size in its sector. |
| brands, focus | The brands to draw, and your own brand, marked as yours. |
| ending, granularity, rolling, complete_only, filters | The period and filters, as in query. |
| theme | light (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.
