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

# Radar chart

> The Syrto radar positioning chart as a self-contained SVG image.

`syrto_radar_chart` returns the same chart as [`syrto_radar_map`](/mcp/tools/radar-map) - same companies, same axes - as a self-contained SVG image instead of an on-screen widget. It is vector, so it stays sharp in print, and it needs no network and no fonts installed.

Use it when the picture has to land in a file: an HTML report, a PDF, a Word document, a slide. It is also the tool that produces a picture at all on a host that does not render MCP Apps.

The figure on the [Radar map](/mcp/tools/radar-map) page is exactly what this tool returns.

## Use this tool to

* Put the radar positioning chart into a document or slide
* Get a chart on a host where the interactive map cannot render

**Related tools:** [Radar map](/mcp/tools/radar-map) is the interactive version - prefer it when the user just wants to look at the chart in the conversation and the host renders MCP Apps, since it has no size limit and lets them click companies to single them out.

## Arguments

The chart takes the same five company sources as [`syrto_radar_map`](/mcp/tools/radar-map#arguments), and they mean exactly the same things: `company_id`, `peer_ids`, `peer_filters`, `company_lists`, and `aggregates`. `language` and `trajectories` behave the same way too, except that `trajectories` is final here - there is no button on an image.

The rendering options below are specific to this tool.

<ParamField query="labels" type="boolean">
  Draw company name labels on the chart. Default `true`. Turn it off when the document names the companies itself in a caption or legend, or when the chart is crowded enough that the labels cover it.
</ParamField>

<ParamField query="field" type="boolean">
  Draw the Syrto contour background - the shading that says which regions of the map are strong. Default `true`; it is what makes the chart readable as a position rather than a scatter plot. Turning it off is a size lever worth about 6 KB.
</ParamField>

<ParamField query="width" type="integer">
  Chart width in pixels, 320 to 2000. Default `960`.
</ParamField>

<ParamField query="height" type="integer">
  Chart height in pixels, 240 to 2000. Default `560`.
</ParamField>

<Note>
  The default is landscape on purpose: the two axes are uncorrelated scores scaled independently, so a square preserves nothing. Match the width to the column the figure sits in - text and markers are a fixed pixel size, so a much larger chart has proportionally smaller-looking labels.
</Note>

## Size limit

Unlike the interactive map, this chart has a size limit, because the image travels back as text. There is no fixed company count: cost is dominated by the companies themselves - legal name length, group name, how many filed years they have, whether they carry a forecast - plus the reference lines and the chart size. A plain peer set with ordinary names reaches roughly 90; the same set with long names, forecasts, and four reference lines can run out well under half that.

If not every company fits, the chart draws **as many as do** - the focus company first, every reference line kept - and `warning` says how many were left out. To fit more, the levers are `trajectories: false`, `labels: false`, `field: false`, a smaller `width` and `height`, or fewer reference lines.

## Returns

Two things in one result.

<ResponseField name="summary" type="object">
  The same summary [`syrto_radar_map`](/mcp/tools/radar-map#returns) returns - `axes`, `companies` (with `id`, `name`, `role`, `group`, `color`, `consolidated`, `start`, `latest`, `forecast`), `latest_year`, `unavailable_ids`, and `peer_population`. This is what you write the surrounding prose from.

  `color` is a colour name rather than a hex, so a caption can say "the green ones" and match what the reader sees.
</ResponseField>

<ResponseField name="image" type="resource">
  The chart itself, as an embedded `image/svg+xml` resource. Save the text verbatim as a `.svg` file, or inline it in HTML. Do not retype or reformat the SVG - copy it byte for byte.
</ResponseField>

<ResponseField name="warning" type="string | null">
  Present when the chart ran out of room, reporting how many companies were left out.
</ResponseField>

<Warning>
  A company left off because the chart ran out of room is in neither `companies` nor `unavailable_ids`. Only `warning` reports those, and only as a count - so a chart of 84 described as though it were the 148 asked for is the one way this goes wrong.
</Warning>

<Note>
  The two axes are scaled independently, so a path's **angle** on screen is not its angle in score space. Describe direction per axis - "larger and more efficient" - rather than describing the slope.
</Note>

## Example

**A chart for a report, without labels:**

```json theme={null}
{
  "company_id": "Zm86SVRfMDE2NTQwMTAzNDVfVTox",
  "peer_ids": ["Zm86SVRfMDAxNTk1NjAzNjZfVTox"],
  "labels": false,
  "width": 1200,
  "height": 700
}
```
