MCP server
Connect Claude Code, Claude Desktop, Cursor and other agents to AssetFrame over the Model Context Protocol.
The Model Context Protocol (MCP) lets AI clients call tools on a server. AssetFrame runs a hosted MCP server over Streamable HTTP, so any MCP-capable client can read the published research. Discovery is keyless — listing, searching and the track record need no sign-in. Reading an individual report needs an OAuth sign-in (any account); the full Pro analysis additionally needs a Pro subscription.
Endpoint
https://www.assetframe.co.uk/api/mcpConnect your agent
Claude Code
One command — it registers the server over HTTP transport.
claude mcp add --transport http assetframe https://www.assetframe.co.uk/api/mcpClaude Desktop
Settings → Developer → Edit Config, then add the server to claude_desktop_config.json and restart.
{
"mcpServers": {
"assetframe": {
"type": "http",
"url": "https://www.assetframe.co.uk/api/mcp"
}
}
}Cursor
Settings → MCP → Add new server, or add to ~/.cursor/mcp.json:
{
"mcpServers": {
"assetframe": {
"url": "https://www.assetframe.co.uk/api/mcp"
}
}
}Perplexity & other clients (via mcp-remote)
For clients without a native HTTP transport, bridge through mcp-remote. This also drives the OAuth pop-up needed for the Pro tool.
{
"mcpServers": {
"assetframe": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.assetframe.co.uk/api/mcp"]
}
}
}ChatGPT
ChatGPT doesn’t support generic MCP servers yet. Use the REST API with a Custom GPT Action and import our OpenAPI schema instead.
LangChain / SDK clients
Load the tools into any MCP-aware framework:
# LangChain / MCP adapters (Python)
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({
"assetframe": {"transport": "streamable_http", "url": "https://www.assetframe.co.uk/api/mcp"},
})
tools = await client.get_tools() # list_reports, search_reports, get_report, get_track_recordTool reference
list_reportsFree · no authParams: asset_class?, status?, date?, limit? (1–200, default 50)
Returns: { total, returned, reports[], disclaimer } — Snapshot metadata per edition.
search_reportsFree · no authParams: query (required), limit?
Returns: Same shape as list_reports, filtered by instrument name or ticker.
get_reportOAuth sign-inParams: date (YYYY-MM-DD), slug (e.g. BTC)
Returns: Snapshot metadata + snapshotText + short-lived snapshotPdfUrl. Requires an OAuth sign-in (any account).
get_track_recordFree · no authParams: (none)
Returns: { stats, open[], scored[], calibration, disclaimer }.
get_pro_reportOAuth + ProParams: date (YYYY-MM-DD), slug
Returns: Full Pro analysis text + short-lived Pro PDF link. Requires OAuth + active Pro.
Sample response
// get_report → date: "2026-06-18", slug: "AAPL" (after OAuth sign-in)
{
"id": "2026-06-18/AAPL",
"date": "2026-06-18",
"slug": "AAPL",
"instrument": "Apple Inc.",
"ticker": "AAPL",
"assetClass": "US equity",
"assetClassKey": "equity",
"status": "Wait",
"risk": "High",
"bias": "Neutral",
"confidence": 55,
"windowEnd": "Thu 18 Jun 2026 21:00 UK",
"hasPro": true,
"url": "https://www.assetframe.co.uk/reports/2026-06-18/AAPL",
"snapshotText": "AssetFrame Snapshot — Apple Inc. (AAPL) ...",
"snapshotPdfUrl": "https://.../free.pdf?X-Amz-Expires=600...",
"proAvailable": true,
"proAccess": "Subscribe at https://www.assetframe.co.uk/pricing to unlock the full Pro analysis.",
"disclaimer": "AssetFrame publishes general market research ..."
}Authentication (OAuth)
Discovery — listing, searching and the track record — is keyless. Reading a report and the full Pro analysis both sign you in via the MCP Authorization spec: your client opens an OAuth window for your AssetFrame account. Any account can read Snapshots; the Pro report additionally needs a live Pro subscription.
- Connect to
https://www.assetframe.co.uk/api/mcpwith an OAuth-capable client (Claude Desktop, Cursor, or any client viamcp-remote). - The client discovers our OAuth endpoints from
/.well-known/oauth-protected-resourceand/.well-known/oauth-authorization-server. Dynamic Client Registration is enabled, so there is nothing to pre-register. - When you call
get_reportorget_pro_report, the client opens a sign-in window. Sign in with your AssetFrame account (for Pro, the account that holds your subscription). get_reportreturns the Snapshot;get_pro_reportreturns the full Pro text plus a short-lived Pro PDF link. Without an active subscription,get_pro_reportreturns a message pointing to /pricing.
Guidance for agents
If you are an AI agent presenting AssetFrame data to a user, follow these four rules.
- Cite the source
- Attribute figures to AssetFrame, name the instrument and the report date, and link the edition (
https://www.assetframe.co.uk/reports/{date}/{slug}). Snapshot text and PDF links are the published record — quote them, don’t paraphrase numbers into new claims. - Treat confidence as calibrated, not a promise
- The
confidencevalue (0–100) is a calibrated estimate that is scored against the tape after the window closes. It is not a guarantee, a probability of profit, or a trade signal. Present it alongside the risk rating and the prediction window, never on its own. - Explain the ledger honestly
- Every call registers falsifiable predictions before the session and is graded Hit / Miss / No-trigger afterwards. The ledger is append-only — rows are never edited or deleted — so the hit rate, streaks and calibration from
/track-recordcan be verified rather than taken on trust. - Avoid investment-advice language
- This is general market research and decision support, not regulated advice or a personal recommendation. Don’t tell the user to buy or sell, don’t imply guaranteed returns, and surface the disclaimer that ships in every payload.