Supply chain graph, natively in your agent.
ForcedAlpha exposes its full supply chain graph as a Model Context Protocol (MCP) server. Any MCP-compatible agent — Claude Desktop, Claude Code, Cursor, Gemini CLI, or any SDK using the MCP standard — can query the graph directly without HTTP plumbing or response parsing.
The server exposes 11 tools. Every tool response includes a provenance block on every edge: confidence grade (A/B/C/D), evidence type, source URL, verbatim excerpt, and a plain-English caveat when the edge is inferred or soft-signal only.
Get an API key
MCP calls authenticate with the same key as the REST API. Free tier: 500 requests per day, no credit card required.
Get a key instantly on the API docs page →
Need higher limits? See pricing → or write to [email protected].
Quickstart — 2 steps
No SSH tunnel. No Python proxy. No server install. The MCP server is available at a public endpoint over SSE.
fa_xxxxxxxxxx.fa_YOUR_KEY_HERE with your actual key. Restart your agent.That is all. Once connected, you can ask natural-language questions and your agent will query the graph directly:
Claude Desktop
Windows: %APPDATA%\Claude\claude_desktop_config.json
Add the forcedalpha entry inside your mcpServers object. Create the file if it does not exist.
{
"mcpServers": {
"forcedalpha": {
"command": "npx",
"args": [
"-y",
"@anthropic-ai/mcp-remote",
"https://forcedalpha.com/mcp/sse?key=fa_YOUR_KEY_HERE"
]
}
}
}
Restart Claude Desktop after saving. The tool icon should appear in your input bar within a few seconds.
npx is not found, install Node.js from nodejs.org. The @anthropic-ai/mcp-remote package is downloaded automatically on first use.
@anthropic-ai/mcp-remote handles this automatically. Direct SSE clients should listen for connection drops and reconnect with the same ?key= param.
Claude Code
One command to register the server:
claude mcp add forcedalpha \
--transport sse \
https://forcedalpha.com/mcp/sse?key=fa_YOUR_KEY_HERE
Verify it was added:
claude mcp list
The server is now available in all Claude Code sessions. Use claude mcp remove forcedalpha to disconnect.
Cursor
{
"mcpServers": {
"forcedalpha": {
"command": "npx",
"args": [
"-y",
"@anthropic-ai/mcp-remote",
"https://forcedalpha.com/mcp/sse?key=fa_YOUR_KEY_HERE"
]
}
}
}
Restart Cursor after saving. The tools will appear in the Composer context list.
Gemini CLI
{
"mcpServers": {
"forcedalpha": {
"command": "npx",
"args": [
"-y",
"@anthropic-ai/mcp-remote",
"https://forcedalpha.com/mcp/sse?key=fa_YOUR_KEY_HERE"
]
}
}
}
Create ~/.gemini/ if it does not exist. Start a Gemini CLI session after saving — the tools load automatically.
find_chokepoints
| Parameter | Type | Required | Description |
|---|---|---|---|
| theme | string | optional | AI, DEFENSE, ENERGY, ROBOTICS, QUANTUM, CRYPTO, CYBER |
| severity_min | integer | optional | Minimum severity 1–5. Default: 4 |
| country | string | optional | ISO country code: JP, US, TW, KR, CN, DE |
| limit | integer | optional | Max results. Free: 5, Pro/Enterprise: unlimited |
{
"answer": "Found 12 chokepoints at severity 4-5 in theme AI. [Source: byte-verified primary, conf A (0.95)]",
"chokepoints": [
{
"node_id": "LASERTEC",
"name": "Lasertec Corporation",
"severity": 5,
"market_cap_b": 9.2,
"country": "JP",
"top_evidence": {
"product": "EUV mask inspection systems",
"provenance": {
"confidence_grade": "A",
"evidence_type": "byte-verified primary",
"source_url": "https://...",
"caveat": null
}
}
}
]
}
trace_dependency
| Parameter | Type | Required | Description |
|---|---|---|---|
| node_id | string | required | Ticker or node ID: AXTI, TSMC, LASERTEC |
| direction | string | optional | "downstream" (default) or "upstream" |
| max_depth | integer | optional | Hops to traverse. Free: 1–2, Pro: 1–3, Enterprise: 1–5 |
{
"answer": "AXTI failure propagates to 14 downstream nodes across 3 hops. [Source: byte-verified primary, conf A (0.91)]",
"breaks_count": 14,
"stresses_count": 8,
"asymmetry_ratio": 73.2,
"propagation_paths": [
{
"path": ["AXTI", "COHERENT", "AAPL"],
"product": "InP substrates",
"provenance": {
"confidence_grade": "A",
"source_url": "https://...",
"caveat": null
}
}
]
}
verify_edge
| Parameter | Type | Required | Description |
|---|---|---|---|
| from_id | string | required | Supplier node ID or ticker |
| to_id | string | required | Customer node ID or ticker |
{
"answer": "Direct edge confirmed: LASERTEC supplies_to TSMC (EUV mask inspection). [Source: byte-verified primary, conf A (0.95)]",
"verdict": "VERIFIED_PRIMARY",
"edges": [
{
"relationship": "supplies_to",
"product": "EUV mask inspection systems",
"provenance": {
"confidence_grade": "A",
"evidence_type": "byte-verified primary",
"source_url": "https://...",
"source_excerpt": "Lasertec's ACTIS series inspection tools are...",
"caveat": null
}
}
]
}
portfolio_common_mode
| Parameter | Type | Required | Description |
|---|---|---|---|
| tickers | array of strings | required | Free: up to 5 tickers. Pro/Enterprise: up to 20 |
{
"answer": "3 common-mode chokepoints found across 4 tickers. Highest: LASERTEC (sev 5, shared by 4/4). [Source: byte-verified primary, conf A]",
"convergences": [
{
"node_id": "LASERTEC",
"severity": 5,
"shared_count": 4,
"shared_by": ["NVDA", "AMD", "AMAT", "LRCX"]
}
]
}
explain_asymmetry
| Parameter | Type | Required | Description |
|---|---|---|---|
| node_id | string | required | Ticker or node ID |
{
"answer": "AXTI controls 73:1 downstream asymmetry. [Source: byte-verified primary, conf A (0.91)]",
"asymmetry": {
"ratio_1hop": 73.2,
"ratio_cascade": 412.0,
"downstream_cap_1hop_b": 10.98
}
}
find_underpriced_physical_bottlenecks
| Parameter | Type | Required | Description |
|---|---|---|---|
| max_cap_b | float | optional | Maximum market cap in billions. Default: 10 |
| severity_min | integer | optional | Minimum severity 1–5. Default: 4 |
| min_ratio | float | optional | Minimum asymmetry ratio. Default: 50 |
| theme | string | optional | AI, DEFENSE, ENERGY, ROBOTICS, QUANTUM, CRYPTO, CYBER |
{
"answer": "7 positions match (cap < $10B, severity >= 4, ratio >= 100:1, theme AI).",
"positions": [
{
"node_id": "AXTI",
"market_cap_b": 0.15,
"severity": 4,
"asymmetry_ratio_cascade": 412.0
}
]
}
Free tier returns the top 3 results. Pro and Enterprise return up to 20.
portfolio_xray
| Parameter | Type | Required | Description |
|---|---|---|---|
| tickers | array of strings | required | List of ticker symbols: ["NVDA", "AMD", "TSLA"] |
| max_hops | integer | optional | Maximum upstream hops. Free: 1–2, Pro: 1–3, Enterprise: 1–6. Default: 3 |
| evidence | string | optional | Edge filter: "all" (default), "primary_only", or "verified_only" |
{
"answer": "5 shared upstream nodes found across 3 tickers at max depth 3. Top: LASERTEC (sev 5, shared by 3/3, hop 2). [Source: primary]",
"common_dependencies": [
{
"node_id": "LASERTEC",
"severity": 5,
"shared_by": ["NVDA", "AMAT", "LRCX"],
"min_hop": 2
}
]
}
trace_shock
| Parameter | Type | Required | Description |
|---|---|---|---|
| event | string | required | Natural-language event (max 500 chars). Include material names, countries, and action verbs for best parsing. Example: "China restricts rare earth exports" |
| portfolio | array of strings | optional | List of tickers to filter results to portfolio exposure only |
| mode | string | optional | "first_order" (single-supplier breaks) or "second_order" (weighted stress exposure). Default: "first_order" |
{
"answer": "Event: 'China restricts gallium exports' → type=export_restriction, seeds=[gallium, gallium_arsenide]. Found 23 downstream transmission chains. Top exposed: Coherent Corp (sev 4/5, $4.2B) at depth 2. Total market cap at risk: $142.3B. Portfolio exposure: 2 holdings affected (AXTI, NVDA).",
"event_parsed": {
"seed_nodes": ["gallium", "gallium_arsenide"],
"event_type": "export_restriction",
"source_country": "CN"
},
"cascade_summary": {
"total_breaks": 23,
"total_cap_at_risk_b": 142.3
},
"portfolio_exposure": [
{ "ticker": "AXTI", "depth": 1, "exposure_type": "break" }
]
}
verify_claim
| Parameter | Type | Required | Description |
|---|---|---|---|
| claim | string | required | Plain-English claim to verify. Example: "TSMC depends on Lasertec for EUV inspection" |
{
"answer": "CONFIRMED: LASERTEC supplies_to TSMC (EUV mask inspection systems). [Source: byte-verified primary, conf A (0.95) — https://...]",
"verdict": "CONFIRMED",
"matched_edges": [
{
"from_id": "LASERTEC",
"to_id": "TSMC",
"relationship": "supplies_to",
"product": "EUV mask inspection systems",
"provenance": {
"confidence_grade": "A",
"evidence_type": "byte-verified primary",
"source_url": "https://...",
"caveat": null
}
}
]
}
company_dependency_card
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | required | Stock ticker symbol: TSMC, NVDA, ASML |
{
"node_id": "ASML",
"name": "ASML Holding",
"severity": 5,
"market_cap_b": 296.4,
"top_upstream": [
{ "name": "Carl Zeiss SMT", "product": "EUV optics", "severity": 5, "hop_count": 1 }
],
"top_downstream": [
{ "name": "TSMC", "market_cap_b": 1050, "hop_count": 1 }
],
"annotation": {
"moat_type": "qualification_moat",
"bear_case": "High optics concentration in single supplier; 3nm roadmap delays could defer orders",
"catalyst_watch": "EUV 0.55 NA High-NA ramp timing at Intel and TSMC"
}
}
find_surprise_dependency
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | required | Stock ticker symbol |
{
"answer": "Surprise dependency for AAPL: AXTI (AXT Inc., $0.15B) — sole US merchant InP substrate supplier, sev 4/5. 2 hops upstream. [Source: byte-verified primary, conf A (0.91)]",
"surprise_node": {
"node_id": "AXTI",
"name": "AXT Inc.",
"severity": 4,
"market_cap_b": 0.15,
"surprise_score": 8.7,
"path_from_ticker": ["AAPL", "COHERENT", "AXTI"]
}
}
Provenance format
Every edge returned by any tool includes a provenance block. Your agent can surface this citation inline without additional bookkeeping — the answer string already ends with [Source: {evidence_type}, conf {grade} ({score}) — {url}].
{
"confidence": 0.92,
"confidence_grade": "A",
"evidence_type": "byte-verified primary",
"relationship_class": "hard supply relationship",
"source_url": "https://www.sec.gov/...",
"source_excerpt": "verbatim quote from the source page (up to 200 chars on Pro)",
"verification_status": "verbatim_verified",
"caveat": null
}
Confidence grades
Evidence types
byte-verified primary — verbatim quote confirmed on the source page via automated fetch and substring match. Highest reliability.
operator-paste verified — paywalled source pasted by operator; quote confirmed present in the paste.
primary (source bot-blocked, pending verify) — a primary source URL is on file but the page blocks automated fetching; quote not yet confirmed.
inferred — no primary source; derived from graph structure or analyst reasoning. Confidence capped at 0.70.
soft signal only — patent citation or podcast claim. Not verified as a commercial supply relationship. Excluded from cascade traversal.
Caveat field
The caveat field is null for clean primary edges. It auto-populates when evidence quality is reduced:
- "soft signal only — not verified as commercial supply relationship"
- "no primary source — inferred from graph structure or analyst reasoning"
- "no source URL on file"
- "source URL present but verbatim quote not yet captured"
Tier comparison
All 11 tools are available on every tier. Tier differences apply to depth, result count, score format, and daily quota.
| Feature | Free | Pro | Enterprise |
|---|---|---|---|
| Requests per day | 500 | 10,000 | Unlimited |
| trace_dependency / portfolio_xray max hops | 2 | 3 | 5 |
| Cascade depth (trace_shock) | 2 hops | 4 hops | 6 hops |
| Score format in responses | Bucketed (HIGH / MED / LOW) | Exact (0.91) | Exact + raw components |
| source_excerpt length | 50 chars | 200 chars | Full verbatim |
| portfolio_common_mode max tickers | 5 | 20 | 20 |
| find_underpriced_bottlenecks results | Top 3 | Top 20 | All matches |
| Dedicated support | — | — | Yes + SLA |
Rate limits
MCP tool calls count against the same daily quota as REST API requests.
Questions? [email protected] — we respond same day.