Heads up During early access these endpoints are served through MCPconnect your agent in two minutes. Direct REST calls are available on the Unlimited plan: email us.

MCP server

Use Rockmoon from Claude Desktop, Cursor, Cline, or any Model Context Protocol client. Same financial data as the REST API, exposed as 18 LLM-callable tools.

MCP turns the Rockmoon API into something an LLM agent can pick up and use directly — no glue code, no JSON wrangling on the client side. Your Basic API key gates the connection the same way it gates REST; tool calls count against the same per-minute rate limit on your tenant.

The server is at https://mcp.rockmoon.ai over the streamable HTTP transport. Local testing also works over stdio (handy when wiring up Claude Desktop without a network round-trip).

What's "MCP"? A small open protocol from Anthropic that standardizes how LLM clients discover and call external tools. The client lists available tools, the model picks one, the server runs it, the result flows back into the conversation. Rockmoon's MCP server is a thin wrapper around the same SQL queries the REST API uses, so any answer your client gives you traces back to the same source.
Claude Desktop basic

Connect from Claude Desktop

Add an entry to claude_desktop_config.json and restart the app. No CLI install required.

Config

Open Settings → Developer → Edit config in Claude Desktop, then add the rockmoon block under mcpServers:

{
  "mcpServers": {
    "rockmoon": {
      "transport": "http",
      "url": "https://mcp.rockmoon.ai/mcp",
      "headers": {
        "X-API-Key": "rk_YOUR_KEY"
      }
    }
  }
}

Verify

Restart Claude Desktop. In a new conversation, ask: "What financial data tools do you have for Apple?" The model should list the rockmoon tools and call one. You can also open the tools tray in the chat input — Rockmoon's 18 tools will be grouped under the server name.

Tips

  • The HTTP transport is the recommended default — works behind proxies, survives suspend/resume, and shares the same TLS edge as the REST API.
  • If your X-API-Key is wrong the server returns 401 and the Desktop UI shows the server as "disconnected" with a red dot — check the key in /dashboard.
  • Tool calls count toward your tenant's per-minute rate limit exactly like REST calls do. A complex agent loop can burn through the Basic 1,000 / min cap fast — see Rate limits.
Cursor / Cline / Continue / any HTTP-MCP client basic

Connect from other MCP clients

Same URL + header. Most clients use the same JSON shape; only the file location differs.

Cursor

Cursor reads ~/.cursor/mcp.json (project-scoped: .cursor/mcp.json at the repo root). Add the same mcpServers.rockmoon block as for Claude Desktop.

Cline (VS Code extension)

Open Cline's settings → MCP Servers → "Edit MCP Settings" and paste the rockmoon block. Cline calls the streamable-HTTP transport directly; no proxy needed.

Continue

Continue picks up MCP servers from config.yaml in its workspace settings. Add:

mcpServers:
  - name: rockmoon
    transport: http
    url: https://mcp.rockmoon.ai/mcp
    headers:
      X-API-Key: rk_YOUR_KEY

Any other MCP-aware client

The contract is just "streamable HTTP transport at https://mcp.rockmoon.ai/mcp, send your API key in the X-API-Key header." If your client can speak HTTP MCP and set headers, Rockmoon works.

Local stdio (development) basic

Local stdio (offline testing)

Run the MCP server in your own terminal and pipe stdio. No network — useful for clients that don't yet support HTTP MCP.

Run

Clone the repo, install deps, and run:

git clone https://github.com/rockmoon-ai/rockmoon
cd rockmoon
pip install -r requirements.txt
ROCKMOON_API_KEY=rk_YOUR_KEY \
  python -m mcp_server.server --stdio

Wire into Claude Desktop

{
  "mcpServers": {
    "rockmoon-local": {
      "command": "python",
      "args": ["-m", "mcp_server.server", "--stdio"],
      "cwd": "/absolute/path/to/rockmoon",
      "env": {
        "ROCKMOON_API_KEY": "rk_YOUR_KEY"
      }
    }
  }
}

stdio mode hits the same Rockmoon DBs as the HTTP server — calls still consume your tenant's rate-limit budget (we identify you by API key, not transport).

18 tools — every Rockmoon read surface basic

Tool reference

Each tool maps 1:1 to a REST endpoint. The LLM picks the right one based on the user's question.

ToolArgsWhat it returnsREST equivalent
search_companiesquery, limit?Cross-market ticker / name search./v1/companies/search
get_companytickerIdentity + business description for one ticker./v1/company/{ticker}
get_financialsticker, frequency?, limit?All three statements combined./v1/financials/{ticker}
get_income_statementticker, frequency?, limit?IS only./v1/financials/{ticker}/income
get_balance_sheetticker, frequency?, limit?BS only./v1/financials/{ticker}/balance-sheet
get_cash_flowticker, frequency?, limit?CF only./v1/financials/{ticker}/cash-flow
get_pricesticker, period?Daily OHLCV for the requested window./v1/prices/{ticker}
get_segmentsticker, period?Reported business / geographic / product segments./v1/segments/{ticker}
get_segments_trendticker, concept?, periods?Per-segment time series of one concept./v1/segments/{ticker}/trend
get_metricstickerLatest valuation snapshot./v1/metrics/{ticker}
screen_companiesmarket?, filters…Screen stocks across markets by PE / PB / ROE / margins / market cap. e.g. market="KR", roe_min=15, pe_ttm_max=10/v1/screen
get_metrics_historyticker, frequency?, limit?Historical TTM aggregates + margins./v1/metrics/{ticker}/history
compare_metricstickers, fields?Side-by-side valuation comparison across markets./v1/metrics/compare
get_major_shareholdersticker, limit?JP 大株主 / KR 주요주주./v1/ownership/{ticker}/major-shareholders
get_director_holdingsticker, limit?JP director / officer shareholdings./v1/ownership/{ticker}/directors
get_insider_tradesticker, limit?US Form 4 insider transactions./v1/ownership/{ticker}/insider-trades
get_institutional_holdingsticker, limit?US 13F institutional positions./v1/ownership/{ticker}/institutional
get_large_holdings_eventsticker, limit?JP 350/360 大量保有報告書 events./v1/ownership/{ticker}/large-holdings-events

Why not just call REST directly?

  • Discoverability. The model picks the right tool from a typed catalog; no prompt-engineering "here's how to call my API."
  • Typed args. Each tool declares its parameter schema, so wrong types fail at call time with a clear error instead of hitting our backend.
  • Multi-step reasoning. Agent loops can interleave Rockmoon tool calls with other MCP servers (filesystem, search, Slack, etc.) without writing glue.
Rate limits & errors

Rate limits & errors

MCP tool calls share the same per-tenant rate budget as REST. Same error shape, surfaced through the tool result.

Rate budget

  • Basic: 1,000 tool calls / minute / tenant. Daily / monthly are uncapped.
  • Free: 10 calls / minute, 50 / day, 1,000 / month. Agent loops will burn this fast — Free is for kicking the tires.
  • HTTP and stdio share the budget — both authenticate as the same tenant.

Errors

Error codes
HTTPCodeCause
401missing_api_keyNo X-API-Key header on the MCP connection.
401invalid_api_keyHeader set but the key doesn't resolve to a tenant. Check /dashboard.
403upgrade_requiredTool called on Free tier and the underlying endpoint requires Basic.
404ticker_not_foundTicker passed isn't in coverage. Suggest the model retry with a different market suffix.
429rate_limit_exceededPer-minute limit hit. The tool result will include a retry_after_seconds hint the agent can wait on.
500internalServer-side bug. Won't count against your quota — email [email protected] with the call signature.

Errors propagate to the LLM as tool-result content — the model sees them and usually adapts (waits, retries with a different ticker, etc.). If you want to handle them programmatically, both the HTTP and stdio transports return the same JSON error shape as the REST API in the tool-call result payload.