---
canonical_url: "https://docs.composio.dev/toolkits/polar_signals_mcp"
markdown_url: "https://docs.composio.dev/toolkits/polar_signals_mcp.md"
product: "platform"
version: null
last_updated: null
---

# Polar Signals MCP

Polar Signals MCP lets engineering agents inspect continuous profiling projects and performance data to diagnose regressions and optimization opportunities.

- **Category:** model context protocol
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 8
- **Triggers:** 0
- **Slug:** `POLAR_SIGNALS_MCP`
- **Version:** 20260924_00

## Tools

### List projects

**Slug:** `POLAR_SIGNALS_MCP_LIST_PROJECTS`

List all projects accessible to the current user. IMPORTANT: Call this FIRST before using any other tools. Returns project IDs and names. You need a project ID for all other tool calls. If only one project is returned, use it automatically. If a project is specified in the user's instructions (e.g. claude.md or system prompt), prefer that one. Otherwise, ask the user which project to use.

### Query profile flamegraph

**Slug:** `POLAR_SIGNALS_MCP_QUERY_PROFILE_FLAMEGRAPH`

Return a flame graph as a breadth-first call tree. Each row has id, parent (the parent row's id, -1 = a root), depth, cumulative, flat, function_name — rebuild the tree via the parent pointers. Unsymbolized frames (no function_name) instead carry their hex memory address in an extra 'address' column, shown only when such frames are present. Use this for a top-down picture of where time goes; 'query_profile_table' gives a flat ranked list and 'query_profile_sandwich' focuses on one function. Drill into a subtree with 'focus_path'. Same query syntax as 'query_profile_table'.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Query in format 'profile_type' or 'profile_type{label="value", ...}'. Use exact profile type from 'profile_types' (e.g. 'parca_agent:samples:count:cpu:nanoseconds:delta'), not shortened names. Matchers: = != =~ !~. |
| `end_time` | string | No | Absolute end time in RFC3339 format (e.g. '2025-01-15T11:00:00Z'). Defaults to now if only 'start_time' is provided. |
| `max_depth` | integer | No | Maximum tree depth to return — the first call shows just the top of the graph. Defaults to 6. Raise it to see deeper (focus_path narrows which branches are shown, not the depth). Use 0 for the full (5%-trimmed) tree. |
| `focus_path` | array | No | Focus breadcrumb: the exact call path from a root frame (depth 0) downward, as an ordered list read off a prior call's rows (e.g. ["runtime.main"], then ["runtime.main", "handler"]). Use the function_name for symbolized frames, or the hex value from the 'address' column for unsymbolized frames (e.g. "0x97a0235") to descend into native/kernel stacks. Entries may be mixed. Filters the flame graph to stacks following that path — sibling branches are removed while the tree stays rooted at the true root. Omit for the whole-profile flame graph. Append an entry to narrow further, drop the last to widen. |
| `project_id` | string | Yes | The project ID to query. Get this from the 'list_projects' tool. |
| `start_time` | string | No | Absolute start time in RFC3339 format (e.g. '2025-01-15T10:00:00Z'). Takes precedence over 'time_range'. |
| `time_range` | string | No | Relative time range for the profile (e.g. '15m', '1h', '24h'). Used when 'start_time' is not provided. |

### Query profile labels

**Slug:** `POLAR_SIGNALS_MCP_QUERY_PROFILE_LABELS`

Get available label names for a specific profile type. Call this after 'profile_types' to discover what labels exist. You MUST use exact profile type strings from 'profile_types' output. Returns label names that can be used with 'values' and in 'query_profile_table' queries - do not invent label names.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_time` | string | No | Absolute end time in RFC3339 format (e.g. '2025-01-15T11:00:00Z'). Defaults to now if only 'start_time' is provided. |
| `project_id` | string | Yes | The project ID to query. Get this from the 'list_projects' tool. |
| `start_time` | string | No | Absolute start time in RFC3339 format (e.g. '2025-01-15T10:00:00Z'). Takes precedence over 'time_range'. |
| `time_range` | string | No | Relative time range for the profile (e.g. '15m', '1h', '24h'). Used when 'start_time' is not provided. |
| `profile_type` | string | Yes | The profile type to query. MUST be an exact string from 'profile_types' output (e.g. 'parca_agent:samples:count:cpu:nanoseconds:delta'). Do not use shortened names like 'cpu'. |

### Query profile label values

**Slug:** `POLAR_SIGNALS_MCP_QUERY_PROFILE_LABEL_VALUES`

List the values a profiling label takes (e.g. the process names for the 'comm' label). These are label values used to filter queries — not the sampled values of the profile itself. Use it to discover valid filter values; only use label names from 'query_profile_labels'.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_time` | string | No | Absolute end time in RFC3339 format (e.g. '2025-01-15T11:00:00Z'). Defaults to now if only 'start_time' is provided. |
| `label_name` | string | Yes | Label name from 'labels' output (e.g. 'service', 'namespace'). |
| `project_id` | string | Yes | The project ID to query. Get this from the 'list_projects' tool. |
| `start_time` | string | No | Absolute start time in RFC3339 format (e.g. '2025-01-15T10:00:00Z'). Takes precedence over 'time_range'. |
| `time_range` | string | No | Relative time range for the profile (e.g. '15m', '1h', '24h'). Used when 'start_time' is not provided. |
| `profile_type` | string | Yes | Profile type from 'profile_types' output (e.g. 'parca_agent:samples:count:cpu:nanoseconds:delta'). |

### Query profile sandwich

**Slug:** `POLAR_SIGNALS_MCP_QUERY_PROFILE_SANDWICH`

Show the calling context around a specific function: which functions call it (callers) and which functions it calls (callees). Use this after 'query_profile_table' to drill into a specific function. The function_name should be an exact function name from 'query_profile_table' results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Query in format 'profile_type' or 'profile_type{label="value", ...}'. Use exact profile type from 'profile_types' (e.g. 'parca_agent:samples:count:cpu:nanoseconds:delta'), not shortened names. Matchers: = != =~ !~. Example: 'parca_agent:samples:count:cpu:nanoseconds:delta{service="api"}'. |
| `end_time` | string | No | Absolute end time in RFC3339 format (e.g. '2025-01-15T11:00:00Z'). Defaults to now if only 'start_time' is provided. |
| `project_id` | string | Yes | The project ID to query. Get this from the 'list_projects' tool. |
| `start_time` | string | No | Absolute start time in RFC3339 format (e.g. '2025-01-15T10:00:00Z'). Takes precedence over 'time_range'. |
| `time_range` | string | No | Relative time range for the profile (e.g. '15m', '1h', '24h'). Used when 'start_time' is not provided. |
| `function_name` | string | Yes | Exact function name to show sandwich view for (from query_profile_table results) |

### Query profile source

**Slug:** `POLAR_SIGNALS_MCP_QUERY_PROFILE_SOURCE`

Retrieve per-line profiling data for a specific source file. Returns line numbers with flat and cumulative sample counts — without returning the source code itself (read the file directly and correlate using line numbers).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of lines to return per file, sorted by cumulative descending. Defaults to 100. Use 0 to return all lines. |
| `query` | string | Yes | Query in format 'profile_type{label="value"}'. Same syntax as query_profile_table. |
| `end_time` | string | No | Absolute end time in RFC3339 format (e.g. '2025-01-15T11:00:00Z'). Defaults to now if only 'start_time' is provided. |
| `filename` | string | Yes | The source filename (e.g. '/app/main.go'). |
| `project_id` | string | Yes | The project ID to query. Get this from the 'list_projects' tool. |
| `start_time` | string | No | Absolute start time in RFC3339 format (e.g. '2025-01-15T10:00:00Z'). Takes precedence over 'time_range'. |
| `time_range` | string | No | Relative time range for the profile (e.g. '15m', '1h', '24h'). Used when 'start_time' is not provided. |

### Query profile table

**Slug:** `POLAR_SIGNALS_MCP_QUERY_PROFILE_TABLE`

Query profiling data as a flat table of functions sorted by cumulative time. Recommended workflow: first call 'list_projects', then 'profile_types', then 'labels', then 'values' to discover valid query components. Query syntax: 'profile_type{label="value"}' where all components come from previous tool outputs. With symbolized=false, unsymbolized rows (no function_name) gain an 'address' column carrying their hex memory address.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return, sorted by cumulative descending. Defaults to 100. Use 0 to return all rows. |
| `query` | string | Yes | Query in format 'profile_type' or 'profile_type{label="value", ...}'. Use exact profile type from 'profile_types' (e.g. 'parca_agent:samples:count:cpu:nanoseconds:delta'), not shortened names. Matchers: = != =~ !~. Example: 'parca_agent:samples:count:cpu:nanoseconds:delta{service="api"}'. |
| `end_time` | string | No | Absolute end time in RFC3339 format (e.g. '2025-01-15T11:00:00Z'). Defaults to now if only 'start_time' is provided. |
| `filename` | string | No | Filter results by filename (substring match on the source file path) |
| `project_id` | string | Yes | The project ID to query. Get this from the 'list_projects' tool. |
| `start_time` | string | No | Absolute start time in RFC3339 format (e.g. '2025-01-15T10:00:00Z'). Takes precedence over 'time_range'. |
| `symbolized` | boolean | No | If true (default), only show symbolized rows with resolved function names. Set to false to include unsymbolized entries. |
| `time_range` | string | No | Relative time range for the profile (e.g. '15m', '1h', '24h'). Used when 'start_time' is not provided. |

### Query profile types

**Slug:** `POLAR_SIGNALS_MCP_QUERY_PROFILE_TYPES`

ProfileTypes returns the list of available profile types. IMPORTANT: Call 'list_projects' first to get a project ID. Profile types follow the format 'name:sample_type:sample_unit:period_type:period_unit[:delta]' (e.g. 'parca_agent:samples:count:cpu:nanoseconds:delta'). You MUST use these exact strings when calling 'labels' or 'query_profile_table' - do not invent or shorten profile type names.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_time` | string | No | Absolute end time in RFC3339 format (e.g. '2025-01-15T11:00:00Z'). Defaults to now if only 'start_time' is provided. |
| `project_id` | string | Yes | The project ID to query. Get this from the 'list_projects' tool. |
| `start_time` | string | No | Absolute start time in RFC3339 format (e.g. '2025-01-15T10:00:00Z'). Takes precedence over 'time_range'. |
| `time_range` | string | No | Relative time range for the profile (e.g. '15m', '1h', '24h'). Used when 'start_time' is not provided. |
