Twelve Data MCP

Live

API KEY

ANALYTICS

Analytics

Connect to Twelve Data MCP to fetch real-time and historical stock, forex, crypto, and ETF market data for your AI financial analysis workflows.

  • Acts as the user: Every tool call runs as the authorizing user. Access and audit trail stay intact.
  • Credentials stay vaulted: AES-256 encrypted, resolved at request time, never stored in LLM context.
  • Scoped before every call: Per-user permissions enforced automatically. 90-day audit trail included.
Twelve Data MCP
agent · Acme Q3
Run
Currency Conversion in Twelve Data MCP
S
twelvedatamcp_currency_conversion
85ms
Twelve Data MCP agent
Get exchange rate or convert an amount between currencies (fiat or crypto). provide the currency pair as symbol (e.g. 'e.
Sources: Twelve Data MCP
twelvedatamcpmcp
1 tool call
18:29
Message Claude...

Twelve Data MCP tools for AI agents

CALL ANY TOOL
8 tools covering get, search, convert.
twelvedatamcp_search_symbol
Search symbol
Search for financial instruments by name or partial ticker, or find cross-listings. With cross_listings=false (default), search by name or partial ticker with an optional instrument_type filter (Stock, ETF, Mutual Fund, Forex, Cryptocurrency, Commodity). With cross_listings=true, find all exchanges where a symbol is listed. Indices, options, and bonds are not supported -- use an ETF proxy (e.g. SPY for S&P 500, QQQ for NASDAQ-100, DIA for the Dow).
Parameters
Name
Type
Required
Description
symbol
string
Required
Ticker symbol or partial name to search for, e.g. 'AAPL' or 'Apple'.
country
string
Optional
Country name or ISO code to filter cross-listing results, e.g. 'United States' or 'US'.
cross_listings
boolean
Optional
If true, find all exchanges where the given symbol is listed. If false (default), search by name or partial ticker.
exchange
string
Optional
Filter by exchange name to narrow cross-listing results, e.g. 'NASDAQ'.
instrument_type
string
Optional
Filter by instrument type. Valid values: Stock, ETF, Mutual Fund, Forex, Cryptocurrency, Commodity. Only applies when cross_listings is false.
mic_code
string
Optional
Market Identifier Code (MIC) to filter cross-listing results, e.g. 'XNGS'.
outputsize
integer
Optional
Maximum number of results to return. Defaults to 10.
twelvedatamcp_get_price
Get price
twelvedatamcp_auth_status
Auth status
twelvedatamcp_get_quote
Get quote
twelvedatamcp_oauth_login
Oauth login
twelvedatamcp_get_splits
Get splits
twelvedatamcp_oauth_configure
Oauth configure
twelvedatamcp_get_earnings
Get earnings
twelvedatamcp_currency_conversion
Currency conversion
twelvedatamcp_get_dividends
Get dividends
twelvedatamcp_get_financials
Get financials
twelvedatamcp_get_statistics
Get statistics
twelvedatamcp_get_etf_data
Get etf data
twelvedatamcp_get_api_usage
Get api usage
twelvedatamcp_get_market_cap
Get market cap
twelvedatamcp_get_time_series
Get time series
twelvedatamcp_get_analyst_data
Get analyst data
twelvedatamcp_get_company_info
Get company info
twelvedatamcp_get_company_news
Get company news
twelvedatamcp_get_ipo_calendar
Get ipo calendar
twelvedatamcp_get_market_state
Get market state
twelvedatamcp_get_market_movers
Get market movers
twelvedatamcp_get_reference_data
Get reference data
twelvedatamcp_get_regulatory_data
Get regulatory data
twelvedatamcp_get_earliest_timestamp
Get earliest timestamp
twelvedatamcp_get_technical_indicator
Get technical indicator
twelvedatamcp_get_mutual_fund_data
Get mutual fund data
Build your Agent
Same auth pattern across every framework.
Python · LlamaIndex
from langchain_mcp_adapters.client import MultiServerMCPClient
from scalekit import ScalekitClient

client = ScalekitClient(env_url=ENV_URL, client_id=CLIENT_ID, client_secret=SECRET)
token = client.agent.get_token(user_id="user_id", connector="twelvedatamcp")

mcp = MultiServerMCPClient({
"twelvedatamcp": {
"url": "https://mcp.scalekit.com/twelvedatamcp",
"headers": {"Authorization": "Bearer " + token}
}
})
tools = await mcp.get_tools()
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const client = new ScalekitClient({ envUrl, clientId, clientSecret });
const token = await client.agent.getToken({ userId: "user_id", connector: "twelvedatamcp" });

const openai = new OpenAI();
// Connect to MCP at https://mcp.scalekit.com/twelvedatamcp
// Pass: Authorization: Bearer + token
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const client = new ScalekitClient({ envUrl, clientId, clientSecret });
const token = await client.agent.getToken({ userId: "user_id", connector: "twelvedatamcp" });

const anthropic = new Anthropic();
// Connect to MCP at https://mcp.scalekit.com/twelvedatamcp
// Pass: Authorization: Bearer + token
from google.adk.agents import LlmAgent
from scalekit import ScalekitClient

client = ScalekitClient(env_url=ENV_URL, client_id=CLIENT_ID, client_secret=SECRET)
token = client.agent.get_token(user_id="user_id", connector="twelvedatamcp")
# Connect to MCP at https://mcp.scalekit.com/twelvedatamcp
# Pass: Authorization: Bearer + token
Try these prompts
Paste any prompt into your agent to get started.
Get started
Copy the prompt
Copied
Search for financial instruments by name or partial ticker, or find cross-listings?
Copy the prompt
Copied
Get historical OHLCV (Open, High, Low, Close, Volume) time series data?
Advanced
Copy the prompt
Copied
Get exchange rate or convert an amount between currencies (fiat or crypto)?
SEE HOW AUTH WORKS
User authorises once. Every agent call after uses their token with scope enforcement.
1
Authorize
Your user connects
Twelve Data MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Twelve Data MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Twelve Data MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Twelve Data MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other connectors.
GTM and RevOps Teams
Revenue forecast commentary
Pulls open pipeline from Salesforce and HubSpot, calculates coverage against quota, flags at-risk stages, posts commentary to Slack, and logs every snapshot to Google Sheets.
GTM and RevOps Teams
Deal room sync
Pulls opportunity context from Salesforce, captures key decisions from Slack, and syncs a running summary to the deal room doc in Google Drive, but only when the deal actually changed.
People Ops and HR teams
Offer letter routing agent
Drafts the offer in PandaDoc, blocks on the hiring manager's approval in Slack, then emails the candidate their e-signature link. Every call runs as the recruiter who triggered it, never a shared HR bot.
GTM and RevOps Teams
CRM AI agent
Reads the Granola transcript after every call, extracts next steps and updates the HubSpot record, drafts the follow-up in Gmail, and confirms in Slack, all on the rep's own delegated OAuth.
Test other agents
See the same per-user auth pattern across other connectors.
GTM
Revenue forecast agent
Score pipeline coverage against quota across Salesforce and HubSpot, post forecast commentary to Slack, log snapshots to Sheets.
GTM
Deal room sync agent
Pull opportunity context from Salesforce, capture decisions from Slack, and keep the Google Drive deal room doc current.
PEOPLE OPS
Offer letter routing agent
Draft the offer in PandaDoc, gate it on hiring manager approval in Slack, then email the candidate their signature link.
GTM
CRM AI agent
Turn each Granola call transcript into a HubSpot record update, a drafted Gmail follow-up, and a Slack recap.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared token looks fine in a demo. In production every call looks like a service account. Scalekit resolves the real user credential.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
One connector today. Ten tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions

Does the agent access Twelve Data as the user or as a shared key?
As the user. Each workspace member authorizes once and Scalekit resolves their credential at request time. Audit logs attribute every action to that user, not a shared service account.

Where is the Twelve Data API key stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. Refresh is automatic. Revocation is a single dashboard action. Tokens never appear in prompts, logs, or LLM context.

Can I limit what the agent is allowed to do in Twelve Data?
Yes. Pass a tool name filter to listScopedTools so the analytics agent only sees the subset you authorize. Pre-API-call scope checks block out-of-policy actions before the request reaches Twelve Data.

What happens when a user revokes Twelve Data access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.

Whose market data plan do quote requests count against?
The authorizing user's Twelve Data plan. Quotes, indicators, and analyst data draw from that user's rate limits, so one heavy analyst cannot exhaust a shared key for everyone.

Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""twelvedatamcp"": {
""url"": ""https://mcp.scalekit.com/twelvedatamcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.twelvedatamcp]
url = ""https://mcp.scalekit.com/twelvedatamcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""twelvedatamcp"": {
""url"": ""https://mcp.scalekit.com/twelvedatamcp"",
""type"": ""http""
}
}
}