Canary Data
Reference for the Canary Data Model Context Protocol (MCP) server, including available tools, supported markets, data freshness, and rate limits.
Retrieves accounting & disclosure flags for a company identified by ticker and country — the full set shown on the web Accounting tab, spanning the entire accounting_and_disclosure category (revenue/cost recognition, receivables, inventory, auditor and disclosure changes, new accounting issues, and more). Returns paginated flag records, each containing the flag date, severity, title, description, sources, and a metadata map (filing URLs and forms for filing-comparison flags).
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker |
string | required | Company ticker symbol (e.g. AAPL) |
country |
string | required | ISO 3166-1 alpha-2 country code (e.g. US) |
date_from |
string | optional | Start of date range — ISO 8601 format (YYYY-MM-DD) |
date_to |
string | optional | End of date range — ISO 8601 format (YYYY-MM-DD) |
page |
integer | optional | Page number. Defaults to 1 |
per_page |
integer | optional | Results per page. Defaults to 50 |
Response Shape — flags found
Response Shape — no flags found
When data is empty, meta.coverage is included as a hint.
It carries the echoed ticker and country so the caller
can confirm the parameters that were searched, along with a human-readable
hint string. When a date_from or date_to
filter was supplied, the active date bounds are also echoed and the hint clarifies
that the empty result is specific to the requested range — flags may exist outside it.
Response Shape — no flags found (with date range)
Retrieves insider trading flags (all sub-types) for a company identified by ticker and country. Returns paginated flag records derived from regulatory filings, each containing the flag date, severity, description, and structured transaction details.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker |
string | required | Company ticker symbol (e.g. AAPL) |
country |
string | required | ISO 3166-1 alpha-2 country code (e.g. US) |
date_from |
string | optional | Start of date range — ISO 8601 format (YYYY-MM-DD) |
date_to |
string | optional | End of date range — ISO 8601 format (YYYY-MM-DD) |
page |
integer | optional | Page number. Defaults to 1 |
per_page |
integer | optional | Results per page. Defaults to 50 |
Response Shape — flags found
Response Shape — no flags found
When data is empty, meta.coverage is included as a hint.
It carries the echoed ticker and country so the caller
can confirm the parameters that were searched, along with a human-readable
hint string. When a date_from or date_to
filter was supplied, the active date bounds are also echoed and the hint clarifies
that the empty result is specific to the requested range — flags may exist outside it.
Response Shape — no flags found (with date range)
Retrieves fundamental business risk flags for a company identified by ticker and country — the full set shown on the web Fundamentals tab, spanning the entire fundamental_business category (declining sales and margins, going-concern letters, financial distress and high leverage, customer/supplier concentration, competitive and country risk, and AI/competitive positioning shifts). Returns paginated flag records, each containing the flag date, severity, title, description, sources, and a metadata map whose shape varies by flag type.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker |
string | required | Company ticker symbol (e.g. AAPL) |
country |
string | required | ISO 3166-1 alpha-2 country code (e.g. US) |
date_from |
string | optional | Start of date range — ISO 8601 format (YYYY-MM-DD) |
date_to |
string | optional | End of date range — ISO 8601 format (YYYY-MM-DD) |
page |
integer | optional | Page number. Defaults to 1 |
per_page |
integer | optional | Results per page. Defaults to 50 |
Response Shape — flags found
Response Shape — no flags found
When data is empty, meta.coverage is included as a hint.
It carries the echoed ticker and country so the caller
can confirm the parameters that were searched, along with a human-readable
hint string. When a date_from or date_to
filter was supplied, the active date bounds are also echoed and the hint clarifies
that the empty result is specific to the requested range — flags may exist outside it.
Response Shape — no flags found (with date range)
Retrieves fraud & malfeasance flags for a company identified by ticker and country — combining two categories: illegal_or_questionable (fraud, illegal activity, stock manipulation, investigations, regulatory scrutiny, civil lawsuits) and questionable_associations (problematic shareholders, underwriters, business partners, SPAC/reverse-merger history, stock promoters, and listing-jurisdiction risk). Returns paginated flag records, each containing the flag date, severity, title, description, sources, and a metadata map whose shape varies by flag type.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker |
string | required | Company ticker symbol (e.g. AAPL) |
country |
string | required | ISO 3166-1 alpha-2 country code (e.g. US) |
date_from |
string | optional | Start of date range — ISO 8601 format (YYYY-MM-DD) |
date_to |
string | optional | End of date range — ISO 8601 format (YYYY-MM-DD) |
page |
integer | optional | Page number. Defaults to 1 |
per_page |
integer | optional | Results per page. Defaults to 50 |
Response Shape — flags found
Response Shape — no flags found
When data is empty, meta.coverage is included as a hint.
It carries the echoed ticker and country so the caller
can confirm the parameters that were searched, along with a human-readable
hint string. When a date_from or date_to
filter was supplied, the active date bounds are also echoed and the hint clarifies
that the empty result is specific to the requested range — flags may exist outside it.
Response Shape — no flags found (with date range)
Retrieves management track-record & background flags for a company identified by ticker and country — the full management_track_record category: executive and board turnover, prior bankruptcies/delistings, related-party transactions and insider enrichment, nepotism, poor capital allocation, insider buying/selling behaviour, and related governance signals. Returns paginated flag records, each containing the flag date, severity, title, description, sources, and a metadata map whose shape varies by flag type.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker |
string | required | Company ticker symbol (e.g. AAPL) |
country |
string | required | ISO 3166-1 alpha-2 country code (e.g. US) |
date_from |
string | optional | Start of date range — ISO 8601 format (YYYY-MM-DD) |
date_to |
string | optional | End of date range — ISO 8601 format (YYYY-MM-DD) |
page |
integer | optional | Page number. Defaults to 1 |
per_page |
integer | optional | Results per page. Defaults to 50 |
Response Shape — flags found
Response Shape — no flags found
When data is empty, meta.coverage is included as a hint.
It carries the echoed ticker and country so the caller
can confirm the parameters that were searched, along with a human-readable
hint string. When a date_from or date_to
filter was supplied, the active date bounds are also echoed and the hint clarifies
that the empty result is specific to the requested range — flags may exist outside it.
Response Shape — no flags found (with date range)
Retrieves the most recent KPI per metric for a company identified by ticker and country.
Returns one entry per distinct metric (e.g. Revenue, EPS, Active Users), each showing the
value reported in the most recent earnings call transcript. Supports filtering by metric type
and date range. Use the after / before cursors for pagination.
Use id values from the response entries to fetch full historical time series
with the kpi_history tool.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker |
string | required | Company ticker symbol (e.g. AAPL) |
country |
string | required | ISO 3166-1 alpha-2 country code (e.g. US) |
type |
string | optional | Filter by metric type: financial or non_financial |
date_from |
string | optional | Only include metrics whose most recent filing is on or after this date — ISO 8601 (YYYY-MM-DD) |
date_to |
string | optional | Only include metrics whose most recent filing is on or before this date — ISO 8601 (YYYY-MM-DD) |
limit |
integer | optional | Results per page. Defaults to 25, max 100 |
after |
string | optional | Opaque cursor for forward pagination (from meta.after of the previous response) |
before |
string | optional | Opaque cursor for backward pagination (from meta.before of the previous response) |
Response Shape
Retrieves the full historical time series for a specific KPI metric identified by the
id of any entry returned by kpi_snapshot. Returns all historical
values for that metric and company, ordered from most recent to oldest. Supports date range
filtering and cursor-based pagination.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id |
string | required | UUID of any KPI entry returned by kpi_snapshot |
date_from |
string | optional | Start of date range — ISO 8601 format (YYYY-MM-DD) |
date_to |
string | optional | End of date range — ISO 8601 format (YYYY-MM-DD) |
limit |
integer | optional | Results per page. Defaults to 25, max 100 |
after |
string | optional | Opaque cursor for forward pagination |
before |
string | optional | Opaque cursor for backward pagination |
Response Shape
Global public equity markets.
When a query returns zero results, the response includes a
meta.coverage object with a hint field.
This makes the empty-result state unambiguous — an AI agent can
surface the hint directly rather than silently treating the absence
of data as a confirmed lack of flags. When a date range was active,
the hint distinguishes between "no flags in this window" and "no flags
at all", so agents do not draw incorrect conclusions about coverage.
Data is updated daily.
429 Too Many Requests with a Retry-After header
The Canary Data MCP server supports the Streamable HTTP transport and authenticates via OAuth 2.0. Connect it to Claude using one of the methods below.
MCP server URL
Claude.ai — Team & Enterprise
Navigate to the connectors page and add the Canary Data MCP server using the URL above.
Claude Desktop — Free & Pro
From Claude settings > Connectors, add a new connector and enter the MCP server URL above. Claude will guide you through the OAuth login flow on first connection.
Claude Code
Then run /mcp in your Claude Code session to complete the OAuth authentication flow.
GET /authorize
POST /token
https://api.canary-data.com/mcp, Bearer token required
/.well-known/oauth-authorization-server