MCP guide
The hosted MCP server exposes the same data as first-class agent tools — one config line in Claude, Cursor, ChatGPT, or any MCP client. Stateless Streamable HTTP; your normal API key authenticates it.
Setup
{
"mcpServers": {
"likefolio": {
"url": "https://likefolio.ai/mcp/http",
"headers": {
"X-API-Key": "lf_your_key"
}
}
}
}Claude Code
claude mcp add --transport http likefolio
https://likefolio.ai/mcp/http --header "X-API-Key: lf_your_key"
claude.ai and Claude Desktop
Settings → Connectors → Add custom connector, with the URL
https://likefolio.ai/mcp/http?api_key=lf_your_key. The custom
connector form has no header field today, so the query-param form is the
supported path there; once our Connectors-directory listing is live,
adding from the directory replaces this.
Cursor
Add the JSON above to ~/.cursor/mcp.json (global) or
.cursor/mcp.json (per-project). Keep the key out of committed
files by referencing an env var: "X-API-Key":
"${env:LIKEFOLIO_API_KEY}".
VS Code (Copilot)
Add to .vscode/mcp.json. VS Code's top-level key is
servers, and an inputs block prompts for the key
instead of committing it:
{
"inputs": [
{
"type": "promptString",
"id": "likefolio-key",
"description": "LikeFolio API key",
"password": true
}
],
"servers": {
"likefolio": {
"type": "http",
"url": "https://likefolio.ai/mcp/http",
"headers": {
"X-API-Key": "${input:likefolio-key}"
}
}
}
}
Troubleshooting
Initialize works, tool calls 401. Some clients have dropped
custom headers on follow-up POSTs (Claude Code issue #28293 is the known
case). Workaround: authenticate in the URL instead with
?api_key=lf_your_key. The key then lives in URLs and logs, so
rotate it from /console if it leaks.
GET /mcp/http returns 405. Expected: the server is
stateless Streamable HTTP with no SSE stream to open. Clients speak
POST.
403 on get_divergence_events. That tool needs a
Quant-tier key. Fair-rejection rule: tier 403s (and malformed-parameter
400s) charge zero credits.
The same-credits rule
Every MCP tool call burns exactly the credits of its REST twin — one meter, one allowance, one rate card. Your console's request log tags MCP traffic separately so you can see the split.
Tools
| Tool | REST twin | Credits | What it returns |
|---|---|---|---|
get_scores | GET /v1/scores/{ticker} | 2 | Latest Main Street / Wall Street / LikeFolio Score for one ticker. |
get_score_history | GET /v1/scores/{ticker}/history | 1 | Daily score history for one ticker. Depth is tier-bound and dates clamp silently to your floor. |
screen_stocks | GET /v1/screener | 2 | The whole universe, ranked by LikeFolio Score, filterable by score floor. |
get_divergences | GET /v1/divergence | 3 | Today's widest Main Street vs Wall Street gaps, ranked, with researched why-now context on builder+. |
get_divergence_events | GET /v1/divergence/events | 10 | Dated divergence-extreme onsets with forward-return outcomes — the receipts log. Quant tier. |
get_track_record | GET /v1/track-record | free | The public closed model-portfolio record — aggregate stats plus the dated per-trade list. |
get_upcoming_earnings | GET /v1/earnings | 100 | Covered names reporting soon, with the current demand read on each. Builder+ only. |
get_dataset_info | GET /v1/meta | free | Machine-readable data dictionary: fields, history depth, point-in-time vintages, restatement policy, license. Free to call. |
Tool-level notes: screen_stocks clamps limit to
100 and get_divergences to 50 (agent-sized payloads). Every
payload carries as_of dates and citation_urls —
agents should cite them.
Where we're listed
The server publishes as ai.likefolio/consumer-demand in the
official MCP Registry and the major directories (Smithery, Glama, PulseMCP,
mcp.so). Machine-readable manifest:
/.well-known/mcp.json.