API & MCP Guide
There are three ways to pull posts. Free posts need no key; full paid posts and per-ticker numbers open with a subscriber key. Get or manage keys under Account → API & MCP.
1. MCP — connect an AI assistant
Lets Claude, ChatGPT, Cursor and similar tools read and cite this site directly.
| Server | URL | Auth | What you get |
|---|---|---|---|
| Free | https://aiswingx.com/mcp | none | Free posts in full; paid posts as four lines |
| Pro | https://aiswingx.com/mcp/pro | Authorization: Bearer asx_… | Full paid posts + per-ticker metrics |
Claude (claude.ai · Claude Desktop)
Settings → Connectors → "Add custom connector" → URL https://aiswingx.com/mcp/pro, header Authorization: Bearer asx_…. Then just ask, e.g. "find the latest SOFI post".
Claude Code · Cursor · others (JSON config)
{
"mcpServers": {
"aiswingx": {
"url": "https://aiswingx.com/mcp/pro",
"headers": { "Authorization": "Bearer asx_YOUR_KEY" }
}
}
}
ChatGPT (developer mode · custom GPT)
Settings → Connectors → add MCP server → URL https://aiswingx.com/mcp (free) or /mcp/pro with the header.
Tools
about— what the service is (so assistants describe it accurately)list_posts— newest posts (filter by ticker, locale, tier)get_post— one post (four lines + FAQ + body + metrics)search_posts— full-text searchlist_tickers— covered tickersget_metrics— quarter-by-quarter numbers per ticker (Pro)
2. REST API
GET https://aiswingx.com/api/v1 # index
GET https://aiswingx.com/api/v1/posts?ticker=SOFI # list
GET https://aiswingx.com/api/v1/posts/sofi-2026q2 # one post
GET https://aiswingx.com/api/v1/search?q=fair+value
GET https://aiswingx.com/api/v1/tickers
GET https://aiswingx.com/api/v1/metrics/SOFI # subscriber key
Authorization: Bearer asx_YOUR_KEY
Responses are JSON. A post carries four_lines (number, analogy, source, watch_next), body_md, faq, metrics and url.
curl
curl -H "Authorization: Bearer asx_…" "https://aiswingx.com/api/v1/posts/sofi-2026q2"
Python
import requests
r = requests.get("https://aiswingx.com/api/v1/posts", params={"ticker": "SOFI"},
headers={"Authorization": "Bearer asx_…"})
for p in r.json()["items"]:
print(p["ticker"], p["quarter"], p["four_lines"]["number"], p["url"])
3. RSS · plain text
- /feed.xml — RSS
- /llms.txt · /llms-full.txt — for AI agents
- Every post at
/p/<slug>.md— plain text
Limits & rules
- Personal keys: 200 calls/day · License keys: 5,000/day. Over the limit returns
429. - Keys are for you (or your license scope). If one leaks, revoke it and issue a new one.
- Cite the article URL and the filing source when quoting. Redistribution in applications or reports requires the License plan. White-label delivery without attribution (
white_label=1) works only on keys enabled by the Company under a separate agreement. - None of this is investment advice.
