Quartr Pro MCP
Access financial data, company profiles, earnings events, and documents through the Model Context Protocol.
Getting started#
Connect to the Quartr Pro MCP server from any MCP-compatible client. A Quartr Pro subscription is required. Student plans are not eligible.
The MCP server is for individual subscribers doing their own research workflows. If you are building a product or integration on top of Quartr data, use the Quartr Public API instead — it is designed for teams and programmatic access.
Anthropic Marketplace#
Search for Quartr in the Anthropic Marketplace to install the integration directly.
ChatGPT App Store#
Search for Quartr in the ChatGPT App Store to install the integration directly.
Microsoft 365 Copilot#
Quartr is available in Microsoft 365 Copilot in two ways. Both ask you to sign in with your Quartr account on first use, and both are controlled by your Microsoft 365 admin.
Quartr agent#
A dedicated agent you open or @-mention for Quartr research.
- Install Quartr from the Microsoft Marketplace, or open Agents → Get agents in Microsoft 365 Copilot or Teams and search for Quartr.
- Admins: allow the Quartr app in the Teams admin center under Teams apps → Manage apps.
Quartr connector#
A data source Copilot uses in its regular answers, without opening the agent. Works in Copilot Chat, Researcher, Copilot in Excel, and Copilot Cowork.
- Copilot Chat: Settings → Sources, then Connect on Quartr.
- Researcher: the Sources menu.
- Cowork: Sources & Skills → Plugins.
- Admins: enable Quartr in the Microsoft 365 admin center under Copilot connectors → Your connections.
Perplexity#
In Perplexity, go to Settings → Connectors → Add connector, select Advanced, and add the server URL:
https://mcp.quartr.com/mcp
Claude Desktop#
Add the following to your Claude Desktop configuration:
{
"mcpServers": {
"quartr": {
"type": "streamable-http",
"url": "https://mcp.quartr.com/mcp"
}
}
}
Claude Code#
Run the following command to add the Quartr Pro MCP server:
claude mcp add --transport http quartr https://mcp.quartr.com/mcp --scope user
Then sign in with your Quartr account:
claude mcp login quartr
Alternatively, start claude, run /mcp,
select quartr, and choose
Authenticate.
Codex#
Run the following command to add the Quartr Pro MCP server:
codex mcp add --transport http quartr https://mcp.quartr.com/mcp
Then sign in with your Quartr account:
codex mcp login quartr
Inside a Codex session, /mcp shows whether the server is
connected and authenticated.
Other MCP clients#
Any MCP client that supports the Streamable HTTP transport can connect using:
https://mcp.quartr.com/mcp
Configure this URL as an HTTP MCP server in your client of choice. OAuth authentication is handled automatically on first connection. If your client asks for connection details, use:
| Server URL | https://mcp.quartr.com/mcp |
| Transport type | Streamable HTTP (also listed as “Streaming HTTP” or “HTTP”), with JSON responses |
| Sessions | Stateless — no session ID required |
| Authentication | OAuth 2.0 with PKCE and dynamic client registration — no manual API key or token |
Authentication#
The server uses OAuth 2.0 with PKCE. On first connection, your MCP client will:
- Register as an OAuth client (dynamic client registration)
- Redirect you to authorize via your Quartr account
- Receive tokens scoped to
mcp:tools
Tokens are automatically refreshed. All requests require a valid
Bearer token.
Rate limits#
Requests are rate-limited per user, at two levels:
| Scope | Limit |
|---|---|
| Per tool | 20–100 requests per minute, shown on each tool below |
| All tools combined | 100 requests per minute |
| 2,250 requests per hour | |
| 8,500 requests per day |
If you exceed a combined limit, you will receive a 429
response with a Retry-After header indicating when to
retry. If you exceed a per-tool limit, the tool call returns an error
result with error: "rate_limited" and
retryAfterSeconds.
Rejected requests do not count toward the hourly or daily limits, so a brief burst clears within a minute rather than triggering a longer lockout.
Users#
get_current_user#
Get information about the currently signed-in user, including name, email, and subscription. Available regardless of subscription status.
No parameters.
Companies#
search_companies#
Search for companies by name, ticker symbol, CIQ ID, FIGI, or ISIN. Results are paginated (default 5 per page). Use page/perPage params to navigate.
query
string
required
page
integer
perPage
integer
list_companies#
List companies with optional filters. Results are paginated (default 20 per page). Use page/perPage params to navigate.
gics
string[]
countries
string[]
status
enum[]
marketCaps
enum[]
page
integer
perPage
integer
Events#
list_events#
List events for a company or watchlist. At least one of companyId or watchlistId is required; if both are passed, results are filtered by both.
companyId
number
watchlistId
number
eventTypes
enum[]
limit
number
startDate
string
endDate
string
order
enum
after
string
expand
enum[] | null
required
Conferences#
list_conferences#
List investor / industry conferences. Conferences group related events from multiple companies (e.g. JPMorgan Healthcare Conference, Citi Tech Conference). Supports filtering by date range, organizer company, and title search. Sorted by start date (newest first). Use get_conference to fetch a conference's events.
startDate
string | null
endDate
string | null
organizerCompanyId
number | null
query
string | null
limit
number | null
after
string | null
get_conference#
Get a specific conference by id (from list_conferences): its events — the companies that presented, their dates, and one-line summaries — plus title, dates, type, and total event count. Use this to answer who presented at or what happened at a named conference. Returns up to 25 events per call; raise limit (max 100) or pass pagination.endCursor as after to fetch more.
conferenceId
number
required
limit
number
after
string
Documents#
list_documents#
List documents for a company
companyId
number
required
documentTypes
enum[]
startDate
string
endDate
string
limit
number
after
string
read_document#
Read a slide deck or report document by `documentId`. Use `read_transcript` for transcripts. `structuredContent.pages[]` contains each page with its `text` and a deep-link `url`. Long documents are returned in chunks — when `nextPage` is set, call again with `startPage: nextPage` to continue.
documentId
number
required
startPage
number
maxPages
number
read_transcript#
Read the transcript for an event. Picks the best available variant automatically (in-house, raw, or live). Pass `eventId`, or `documentId` for a transcript document (resolved to its event, best variant served). Use `section: "qna"` for the Q&A section only. Each paragraph has a timestamped deep-link `url`.
eventId
number
documentId
number
section
enum | null
fromTimestamp
number | null
search_documents#
Full-text search across transcripts, slides, and reports
query
string
required
documentTypes
enum[]
required
limit
number
startDate
string
endDate
string
filingTypes
enum[]
filter
string
Summaries#
get_document_summary#
Get a Quartr summary of a document (transcript, report, or slides). `summary` is `null` when no summary exists for the document.
documentId
number
required
get_event_summary#
Get a Quartr summary of an event, covering all attached documents. `summary` is `null` when no summary exists for the event.
eventId
number
required
Financials#
get_financials#
Get a company's reported financial figures — revenue, margins, EPS, net income, cash flow — as standardized income statement, balance sheet, and cash flow values, newest period first. Prefer this over transcript or summary tools for any numeric or financial-figure question: the values are standardized and sourced from the company's filing, and each period links to its report on Quartr (`reportUrl`). Pass `metrics` to return only the line items you need.
companyId
number
required
startDate
string
endDate
string
periodType
enum
financialType
enum
metrics
enum[]
includeNullValues
boolean
includeReferenceUrls
boolean
Reference#
Watchlists#
create_watchlist#
Create a new watchlist
name
string
required
companyIds
number[]
rename_watchlist#
Rename a watchlist
watchlistId
number
required
name
string
required
delete_watchlist#
Delete a watchlist
watchlistId
number
required
add_to_watchlist#
Add companies to a watchlist
watchlistId
number
required
companyIds
number[]
required
remove_from_watchlist#
Remove companies from a watchlist
watchlistId
number
required
companyIds
number[]
required
Keywords#
create_keyword#
Create a keyword alert. Supports scoping to all companies, followed companies, specific watchlists, specific companies, or followed-plus-watchlists.
name
string
required
companySetting
enum
required
watchlistIds
number[]
companyIds
number[]
eventTypeIds
number[]
documentTypes
enum[]
update_keyword#
Update a keyword alert. Supports scoping to all companies, followed companies, specific watchlists, specific companies, or followed-plus-watchlists.
keywordId
number
required
name
string
required
companySetting
enum
required
watchlistIds
number[]
companyIds
number[]
eventTypeIds
number[]
documentTypes
enum[]
Saved#
list_saved_items#
List user's saved items (transcript paragraphs, report pages, etc). Newest first. When the user asks about their own saved items, use visibility private; null also returns teammates' items from team folders. In text, <mark> wraps the words the user highlighted.
folderId
number | null
type
enum | null
visibility
enum | null
companyIds
number[] | null
eventTypeIds
number[] | null
limit
number | null
after
string | null
save_item#
Save a transcript paragraph or a slide/report page to the user's saved items. Read the source with read_transcript or read_document first; search results don't carry the ids.
item
object
required
type
enum
required
paragraphId
number
required
startTime
number
required
type
enum
required
documentDataId
number
required
folderId
number | null
remove_saved_item#
Remove one item from the user's saved items. Only their own items, not a teammate's.
savedItemId
number
required
move_saved_items#
Move saved items into or out of a folder. Only their own items, not a teammate's.
savedItemIds
number[]
required
targetFolderId
number | null
required
create_folder#
Create a folder in the user's saved items
name
string
required
visibility
enum
rename_folder#
Rename a folder in the user's saved items
folderId
number
required
name
string
required
delete_folder#
Delete a folder in the user's saved items
folderId
number
required
Workspaces#
list_workspaces#
List the user's workspaces
query
string
visibility
enum
read_workspace#
Read a workspace's properties and content
workspaceId
number
required
write_workspace#
Edit a workspace document body from Markdown, either appending content to the end or overwriting it entirely (controlled by mode). The edit lands live for any connected user. A snapshot of the prior state is automatically taken so the user can revert via the workspace's version history.
workspaceId
number
required
mode
enum
required
markdown
string
required
create_workspace#
Create a new workspace
name
string
required
visibility
enum
tag_company_to_workspace#
Tag a company to a workspace
workspaceId
number
required
companyId
number
required
untag_company_from_workspace#
Remove a company tag from a workspace
workspaceId
number
required
tagId
number
required
Search filters#
create_search_filter#
Create a saved search filter
name
string
required
gics
string[]
countries
string[]
eventTypes
string[]
companyIds
number[]
marketCapCategories
enum[]