Guides / MCP

MCP

Use Phoenix AI filings, financials and quotes as tools in AI clients such as Claude, ChatGPT and Cursor. A Data API key (ck_live_) opens the Data API tools; a PRO API key or OAuth opens the PRO tools, including conversational research. Each key keeps the plan and limits of its own API.

Which tools your key opens

A Data API key (ck_live_…) opens the Data API tools; a PRO API key (ck_pers_…) or OAuth opens the PRO tools. Calling a PRO tool such as ask_phoenix with a Data API key, or connecting with an API docs session key (ck_docs_…), returns WRONG_KEY_SCOPE. See Connect with a Data API key below.

Server details

MCP server details
ItemValue
Server URLhttps://www.chickstockfi.com/openapi/pro/v1/mcp
TransportStreamable HTTP (JSON-RPC 2.0), stateless. Only POST is accepted; GET (SSE) and DELETE return 405.
AuthenticationData API key (Authorization: Bearer ck_live_…) for the Data API tools · PRO API key (Authorization: Bearer ck_pers_…) or OAuth 2.1 (PKCE · dynamic client registration) for the PRO tools
Scopemcp only. The account's PRO plan decides which tools are available.
Required planData API key: a Data API plan (PoC, Launch, Business, Scale or Enterprise). PRO API key or OAuth: a PRO plan (Data, Ask or Bundle). With Data only there are no question tools; with Ask only there are no data tools.

The OAuth authorization server (issuer) is https://www.chickstockfi.com/openapi/pro/v1. Use the www.chickstockfi.com host for MCP connections.

Connect with a Data API key

Data API customers connect with their Data API key (ck_live_…) in the Authorization header. No PRO API plan is needed. The server URL is the same; the key decides which tools you get.

  • Each tool maps to one Data API endpoint. One tool call is one Data API request, counted toward the same daily quota and per-minute limit as REST.
  • tools/list shows only the tools your key can use. Tools for markets outside your contract are left out (a KR-only account has no get_earnings_calendar). Legacy Free keys get get_news, search_news, grounded_answer and get_api_usage only.
  • A result is the REST response body plus usage: quota (daily), rate_limit (per minute) and, for accounts with an AI call limit (PoC, Launch, Business, Scale), ai_quota.
  • Error codes and messages are the same as REST, for example MARKET_NOT_ENTITLED, PLAN_REQUIRED, POC_ENDED, QUOTA_EXCEEDED, RATE_LIMITED and AI_QUOTA_EXCEEDED. When a PoC ends, the connection itself returns 403 POC_ENDED.
  • OAuth sign-in is for PRO accounts; connect a Data API key with the header. API docs session keys (ck_docs_…) cannot connect (401 WRONG_KEY_SCOPE), and PRO tools such as ask_phoenix return WRONG_KEY_SCOPE.

Claude Code

bash
claude mcp add --transport http phoenix-data https://www.chickstockfi.com/openapi/pro/v1/mcp \
  --header "Authorization: Bearer $PHOENIX_DATA_KEY"

Claude Desktop

claude_desktop_config.json

json
{
  "mcpServers": {
    "phoenix-data": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://www.chickstockfi.com/openapi/pro/v1/mcp", "--header", "Authorization:${PHOENIX_AUTH}"],
      "env": { "PHOENIX_AUTH": "Bearer ck_live_xxxxxxxx" }
    }
  }
}

Cursor

~/.cursor/mcp.json

json
{
  "mcpServers": {
    "phoenix-data": {
      "url": "https://www.chickstockfi.com/openapi/pro/v1/mcp",
      "headers": { "Authorization": "Bearer ck_live_xxxxxxxx" }
    }
  }
}

AI calls

grounded_answer uses one AI call each time the answer model is called. get_disclosure_summary and get_stock_briefing use one only when a new summary or briefing is generated. run_data_query runs without a model and does not count. The limit is your tier's daily AI call limit, shared with REST (Rate limits).

Data API tools

Endpoint paths are under https://api.chickstockfi.com/openapi/v1.

Data API tools
ToolData API endpointMarketsNote
get_company_financialsGET /companies/{symbol}/financialsKR · US
get_company_metricsGET /companies/{symbol}/metricsKR · US
get_company_segmentsGET /companies/{symbol}/segmentsKR · US
get_company_dividendsGET /companies/{symbol}/dividendsKR · US
get_company_consensusGET /companies/{symbol}/consensusKR · US
get_company_guidanceGET /companies/{symbol}/guidanceKR · US
get_us_earnings_surprisesGET /companies/{symbol}/earnings-surprisesUS
get_us_analyst_ratingsGET /companies/{symbol}/analyst-ratingsUS
get_company_disclosuresGET /companies/{symbol}/disclosuresKR · US
get_net_income_splitGET /companies/{symbol}/net-income-splitKR
get_quoteGET /quotes/{symbol}KR
get_disclosure_textGET /disclosures/{id}KR
get_disclosure_summaryGET /disclosures/{id}/summaryKRAI call when generated
get_stock_briefingGET /briefings/{symbol}KRAI call when generated
get_major_holdersGET /major-holders/{symbol}KR
get_insider_tradesGET /insider-trades/{symbol}KR
get_treasury_stockGET /treasury/{symbol}KR
get_employeesGET /employees/{symbol}KR
get_credit_ratingsGET /credit-ratings/{symbol}KR
get_dividend_tableGET /dividends/{symbol}KR
get_corporate_actionsGET /corporate-actions[/{symbol}]KR
get_filing_eventsGET /eventsKR
get_ir_calendarGET /ir-calendarKR
get_ir_materialsGET /ir-materialsKR
get_ipo_offeringsGET /ipo-offeringsKR
get_ipo_listingsGET /ipo-listingsKR
get_clinical_trialsGET /clinical-trialsKR
get_earnings_calendarGET /earningsUS
get_economic_calendarGET /economic-calendarKR · US
get_newsGET /news[/{symbol}]KR · USFree keys too
search_newsGET /searchKRFree keys too
grounded_answerGET /ragKR · USAI call · Free keys too
run_data_queryPOST /queryKR · US
get_api_usageGET /keyKR · USFree keys too

Connecting each client

Claude Code

bash
# Connect with a PRO API key
claude mcp add --transport http phoenix https://www.chickstockfi.com/openapi/pro/v1/mcp \
  --header "Authorization: Bearer $PHOENIX_PRO_KEY"

# Connect with OAuth: add it without a header, then in Claude Code run /mcp → phoenix → Authenticate
claude mcp add --transport http phoenix https://www.chickstockfi.com/openapi/pro/v1/mcp

Claude Desktop

To connect without a key, go to Settings → Connectors → Add custom connector, enter the server URL and connect. Log in and approve in the browser, and you are done. To connect with a key, use mcp-remote in claude_desktop_config.json.

claude_desktop_config.json

json
{
  "mcpServers": {
    "phoenix": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://www.chickstockfi.com/openapi/pro/v1/mcp", "--header", "Authorization:${PHOENIX_AUTH}"],
      "env": { "PHOENIX_AUTH": "Bearer ck_pers_xxxxxxxx" }
    }
  }
}

claude.ai web and apps

Settings → Connectors → Add custom connector → enter the server URL → Connect → log in → approve. OAuth only.

ChatGPT

In developer mode, create an app or connector, enter the same address as the MCP server URL, and choose OAuth for authentication.

Cursor

~/.cursor/mcp.json

json
{
  "mcpServers": {
    "phoenix": {
      "url": "https://www.chickstockfi.com/openapi/pro/v1/mcp",
      "headers": { "Authorization": "Bearer ck_pers_xxxxxxxx" }
    }
  }
}

Other MCP clients

Any client that supports Streamable HTTP needs only the server URL and an Authorization header. You can also check the connection with curl.

bash
curl -s https://www.chickstockfi.com/openapi/pro/v1/mcp \
  -H "Authorization: Bearer $PHOENIX_PRO_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

OAuth flow

  1. When a client calls the server without a key, it gets 401 and the protected resource metadata URL.
  2. The client finds the authorization server in the metadata and performs dynamic client registration (/oauth/register).
  3. The browser goes to /oauth/authorize, then login, then the consent screen. The consent screen shows the app name, the redirect URL, the account and the features its plan allows.
  4. After approval, the client exchanges the code for tokens (PKCE S256 required). The access token (ck_mcp_at_…) lasts 1 hour; the refresh token lasts 30 days and is replaced each time it is used.
  5. Approval requires a valid PRO plan. Even after tokens are issued, the plan is checked again on every request.
http
HTTP/2 401
WWW-Authenticate: Bearer resource_metadata="https://www.chickstockfi.com/openapi/pro/v1/.well-known/oauth-protected-resource/mcp", scope="mcp"
OAuth endpoints
PathPurpose
/.well-known/oauth-protected-resource/mcpProtected resource metadata (RFC 9728)
/.well-known/oauth-authorization-serverAuthorization server metadata (RFC 8414)
/oauth/registerDynamic client registration (RFC 7591)
/oauth/authorizeAuthorization request → login and consent
/oauth/tokenCode exchange · token refresh
/oauth/revokeToken revocation (RFC 7009)

All paths are under https://www.chickstockfi.com/openapi/pro/v1. Each account can have 20 live connections; beyond that, the oldest connections are dropped first.

PRO tools (PRO API key · OAuth)

MCP tools
ToolPlan productWhat it does
search_disclosuresDataSearch Korean and US filings by company, market, period and type, including stored AI summaries
get_disclosureDataMetadata, AI summary and form-extracted values for one filing, plus the original text on request
get_company_snapshotDataQuote, valuation, financial ratios and industry
get_financialsDataFinancial statement line items (value, unit, report, filing date, link to the original)
variance_tableDataEarnings variance table (reported actuals · company guidance · pre-release consensus)
fact_checkDataCheck sentences containing numbers against the original filing (no model call)
ask_phoenixAskAsk Phoenix AI PRO a question
get_ask_resultAskGet the result of a question
get_account_usageAll plansPlan and usage for today and this month

PRO limits

  • One tool call counts as one daily call, combined with REST calls. get_ask_result and get_account_usage do not count.
  • Connections made with a key share the same per-second bucket as REST. Each OAuth connection has its own bucket.
  • The connection handshake (initialize · tools/list) does not count toward daily calls.
  • When you hit a limit, the tool result comes back as an error (isError) containing a code such as RATE_LIMITED or DAILY_QUOTA_EXCEEDED. See Errors for what each code means.

If you cannot connect

Send the client name and version, the connection method (key or OAuth) and the time to help@alpsoft.io. Never send the full key.