Heads upDuring early access these endpoints are served through
MCP — connect your agent in two minutes.
Direct REST calls are available on the Unlimited plan:
email us.
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.
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 clientbasic
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:
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.
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 surfacebasic
Tool reference
Each tool maps 1:1 to a REST endpoint. The LLM picks the right one based on the user's question.
Tool
Args
What it returns
REST equivalent
search_companies
query, limit?
Cross-market ticker / name search.
/v1/companies/search
get_company
ticker
Identity + business description for one ticker.
/v1/company/{ticker}
get_financials
ticker, frequency?, limit?
All three statements combined.
/v1/financials/{ticker}
get_income_statement
ticker, frequency?, limit?
IS only.
/v1/financials/{ticker}/income
get_balance_sheet
ticker, frequency?, limit?
BS only.
/v1/financials/{ticker}/balance-sheet
get_cash_flow
ticker, frequency?, limit?
CF only.
/v1/financials/{ticker}/cash-flow
get_prices
ticker, period?
Daily OHLCV for the requested window.
/v1/prices/{ticker}
get_segments
ticker, period?
Reported business / geographic / product segments.
/v1/segments/{ticker}
get_segments_trend
ticker, concept?, periods?
Per-segment time series of one concept.
/v1/segments/{ticker}/trend
get_metrics
ticker
Latest valuation snapshot.
/v1/metrics/{ticker}
screen_companies
market?, 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_history
ticker, frequency?, limit?
Historical TTM aggregates + margins.
/v1/metrics/{ticker}/history
compare_metrics
tickers, fields?
Side-by-side valuation comparison across markets.
/v1/metrics/compare
get_major_shareholders
ticker, limit?
JP 大株主 / KR 주요주주.
/v1/ownership/{ticker}/major-shareholders
get_director_holdings
ticker, limit?
JP director / officer shareholdings.
/v1/ownership/{ticker}/directors
get_insider_trades
ticker, limit?
US Form 4 insider transactions.
/v1/ownership/{ticker}/insider-trades
get_institutional_holdings
ticker, limit?
US 13F institutional positions.
/v1/ownership/{ticker}/institutional
get_large_holdings_events
ticker, 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.
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
HTTP
Code
Cause
401
missing_api_key
No X-API-Key header on the MCP connection.
401
invalid_api_key
Header set but the key doesn't resolve to a tenant. Check /dashboard.
403
upgrade_required
Tool called on Free tier and the underlying endpoint requires Basic.
404
ticker_not_found
Ticker passed isn't in coverage. Suggest the model retry with a different market suffix.
429
rate_limit_exceeded
Per-minute limit hit. The tool result will include a retry_after_seconds hint the agent can wait on.
500
internal
Server-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.