Available Tools
FinanceDataAPI currently exposes 15 MCP tools. The schemas below are manually transcribed from app/mcp/tools/ so they stay readable while matching the real tool signatures.
All tool calls count against the same per-key rate limit and monthly quota used by the REST API.
Symbol tools
list_symbols
Paginated symbol search with optional filters.
{
"type": "object",
"properties": {
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 50 },
"search": { "type": "string" },
"asset_type": { "type": "string" },
"sector": { "type": "string" },
"tags": { "type": "string" }
}
}get_symbol
Returns full metadata for one ticker.
{
"type": "object",
"required": ["symbol"],
"properties": {
"symbol": { "type": "string" }
}
}Signal discovery and batch execution
list_signals
Lists every registered signal definition with names, descriptions, and parameter metadata.
{
"type": "object",
"properties": {}
}run_signals
Computes one or more signals for one or more symbols over a date range.
{
"type": "object",
"required": ["symbols", "signal_names", "start_date", "end_date"],
"properties": {
"symbols": {
"type": "array",
"items": { "type": "string" }
},
"signal_names": {
"type": "array",
"items": { "type": "string" }
},
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"signal_parameters": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": true
}
},
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 100 }
}
}Per-signal tools
All per-signal tools share a common shape:
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 }
}
}FinanceDataAPI currently documents these 8 per-signal tools:
get_sma
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 },
"period": { "type": "integer", "default": 20 }
}
}get_ema
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 },
"period": { "type": "integer", "default": 20 }
}
}get_rsi
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 },
"period": { "type": "integer", "default": 14 }
}
}get_macd
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 },
"fast": { "type": "integer", "default": 12 },
"slow": { "type": "integer", "default": 26 },
"signal_period": { "type": "integer", "default": 9 }
}
}get_bollinger_bands
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 },
"period": { "type": "integer", "default": 20 },
"std_dev": { "type": "number", "default": 2.0 }
}
}get_atr
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 },
"period": { "type": "integer", "default": 14 }
}
}get_momentum
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 },
"period": { "type": "integer", "default": 20 }
}
}get_volume
{
"type": "object",
"required": ["symbol", "start_date", "end_date"],
"properties": {
"symbol": { "type": "string" },
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"interval": { "type": "string", "default": "1d" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 500 }
}
}Backtest tools
submit_backtest
Submits an asynchronous backtest job.
{
"type": "object",
"required": [
"name",
"symbols",
"start_date",
"end_date",
"initial_capital",
"entry_condition",
"entry_signal_names",
"exit_condition"
],
"properties": {
"name": { "type": "string" },
"symbols": {
"type": "array",
"items": { "type": "string" }
},
"start_date": { "type": "string", "format": "date" },
"end_date": { "type": "string", "format": "date" },
"initial_capital": { "type": "number" },
"entry_condition": { "type": "string" },
"entry_signal_names": {
"type": "array",
"items": { "type": "string" }
},
"exit_condition": { "type": "string" },
"position_size": { "type": "number", "default": 1.0 },
"commission": { "type": "number", "default": 0.001 },
"weighting": { "type": "string", "default": "equal" },
"custom_weights": {
"type": "array",
"items": {
"type": "object",
"required": ["symbol", "weight"],
"properties": {
"symbol": { "type": "string" },
"weight": { "type": "number" }
}
}
}
}
}get_backtest
Reads the status or results for an existing backtest.
{
"type": "object",
"required": ["backtest_id"],
"properties": {
"backtest_id": { "type": "integer" }
}
}wait_for_backtest
Polls until a backtest reaches completed or failed.
{
"type": "object",
"required": ["backtest_id"],
"properties": {
"backtest_id": { "type": "integer" },
"timeout_seconds": { "type": "integer", "default": 120 },
"poll_interval_seconds": { "type": "integer", "default": 3 }
}
}Important behavioral notes
interval="1d"is the only interval currently implemented.run_signalssupports up to 50 symbols in one request.- Multi-symbol backtests require a Pro or Enterprise plan.
wait_for_backtestis the preferred retrieval flow; do not hand-roll polling unless you need tighter control.