Overview
Connect via MCP & SDKs
Your tengu key works over three interfaces — the raw REST API, the Model Context Protocol
Your tengu_ key works over three interfaces — the raw REST API, the Model Context Protocol
(for AI agents like Claude and Cursor), and generated SDKs. All three authenticate the same way,
debit the same credit wallet, and honor the same tier gating.
Fastest path: connect your agent#
Your agent signs in to Wealthnow itself. There is no key to copy: you approve the connection once, in your browser, and it uses your plan and credits from then on.
| Agent | What you do |
|---|---|
| Claude (web, Desktop, mobile) | Connect your agent → Claude → Add to Claude, then Connect and Sign in to Wealthnow |
| Claude Code | claude mcp add --transport http wealthnow https://mcp.wealthnow.io/mcp, then /mcp → Authenticate |
| Cursor | Connect your agent → Cursor → Add to Cursor, then Sign in to Wealthnow in the browser |
| ChatGPT | Create a custom connector in Developer mode with the MCP URL below, then Sign in to Wealthnow |
| Anything else | Send your tengu_ key in the X-API-Key header |
After connecting, ask: "Using Wealthnow, what's the latest quote for AAPL?" Connected agents appear on Overview → Connected agents. Disconnecting one stops that agent only; your API keys keep working.
Model Context Protocol (MCP)#
The hosted MCP server exposes Wealthnow's market and research tools to compatible AI clients over Streamable HTTP. Tool calls follow the same credit costs and plan access as REST calls.
| Setting | Value |
|---|---|
| Server URL | https://mcp.wealthnow.io/mcp |
| Transport | MCP Streamable HTTP (JSON-RPC 2.0) |
| Authentication | Sign in to Wealthnow (OAuth 2.1 with PKCE), or your tengu_ key in the X-API-Key header |
| Default catalogue | account_status plus up to 12 starter tools your plan can call |
| Full catalogue | https://mcp.wealthnow.io/mcp?catalog=full |
Tool names. Tools are named for what they do, such as fundamentals_full
or fundamentals_price_snapshot, and each MCP tool name matches the
operationId of the same route in the OpenAPI spec. Names from before the
rename to Wealthnow (tengu_v3_fundamentals_full) are still accepted by
tools/call, so saved prompts and workflows keep working. Every tool carries
MCP annotations: a title, and readOnlyHint: true, since no tool changes
your account or places orders.
What you can call. The default list only decides what your agent sees
first. tools/call accepts any public tool your plan includes, listed or not.
A tool outside your plan returns a plan_required tool error that names the
plan that unlocks it (the same call over REST answers 402). An unknown name
is a JSON-RPC -32602 error.
The server advertises its OAuth configuration from the 401 it returns to an
unauthenticated request, so any client that implements MCP authorization finds
the sign-in on its own. A connection made through sign-in holds a short-lived,
revocable token, never your API key.
Claude (web, Desktop, mobile)#
- On Overview, open Connect your agent → Claude and click Add to
Claude. It opens Claude's connector form with the name and URL filled in.
(Or, in Claude, open Settings → Connectors → Add custom connector and
enter
https://mcp.wealthnow.io/mcp.) - Click Add, then Connect. Claude opens Wealthnow in your browser.
- Choose Sign in to Wealthnow, then Connect on the confirmation, which shows the plan and credit balance the agent will use.
You are returned to Claude, connected. On a Claude Team or Enterprise plan, an owner may need to add the connector for your organization first.
Claude Code#
claude mcp add --transport http wealthnow https://mcp.wealthnow.io/mcpRun /mcp inside Claude Code, select wealthnow, and choose Authenticate.
A browser tab opens for Sign in to Wealthnow. On a machine without a
browser, pass your key instead:
1claude mcp add --transport http wealthnow https://mcp.wealthnow.io/mcp \2 --header "X-API-Key: tengu_YOUR_KEY"Cursor#
On Overview, open Connect your agent → Cursor and click Add to Cursor. Cursor installs the server from a link that contains only its public URL, detects that it needs sign-in, and opens Sign in to Wealthnow in your browser. There is no key to paste.
If sign-in is blocked on your machine, add the server to ~/.cursor/mcp.json
with your key in the X-API-Key header instead. Keep that file out of shared
repositories. See Cursor's MCP documentation.
ChatGPT#
ChatGPT connects custom MCP servers through OAuth, which Wealthnow supports. The Connect your agent → ChatGPT card walks through the clicks:
- In ChatGPT, open Settings → Apps (some accounts show Apps & Connectors), then Advanced settings, and turn on Developer mode.
- Back on Apps, click Create.
- Enter
https://mcp.wealthnow.io/mcpas the MCP server URL and choose OAuth. - Sign in to Wealthnow and Connect. Do not paste an API key.
Developer mode availability depends on your ChatGPT plan, and workspace administrators may control it.
Claude Desktop extension (API key)#
The extension bundles its own MCP bridge, so it needs no Node.js install and no config files. Use it when you would rather authenticate with a key.
- Download the Wealthnow desktop extension (or use the Download for Claude Desktop button on Overview).
- In Claude Desktop, open Settings → Extensions → Advanced settings and click Install Extension.
- Select
wealthnow.mcpband enter your Wealthnow API key when prompted.
Claude stores the key in your operating system's secure storage. See Claude's extension installation guide.
Configure Claude Desktop by hand (API key)#
Claude Desktop can launch mcp-remote as a local process that forwards your
key. Node.js and npx must be available to Claude Desktop.
- Open
claude_desktop_config.jsonand add thewealthnowentry tomcpServers, keeping any existing entries. - Replace
tengu_YOUR_KEYin theenvobject with your Wealthnow key. - Save the file, fully quit Claude Desktop, and reopen it.
1{2 "mcpServers": {3 "wealthnow": {4 "command": "npx",5 "args": [6 "-y",7 "mcp-remote@0.14.2",8 "https://mcp.wealthnow.io/mcp",9 "--header",10 "X-API-Key:${TENGU_API_KEY}"11 ],12 "env": {13 "TENGU_API_KEY": "tengu_YOUR_KEY"14 }15 }16 }17}Desktop apps may not inherit variables exported in your terminal; the env
object supplies the key to the MCP process directly. This file contains your
key, so keep it out of source control and screenshots. To expose the full
public catalogue, use https://mcp.wealthnow.io/mcp?catalog=full in args.
Grok#
Grok supports custom MCP connectors, but authenticated calls through the Grok
app have not been verified. To try it, open
Grok connectors, select New Connector → Custom,
enter https://mcp.wealthnow.io/mcp, and choose Sign in to Wealthnow if Grok
offers sign-in. Organization administrators may need to provision the
connector first. For applications on the xAI API, the
remote MCP integration accepts
an X-API-Key header.
Inspect the available tools#
Listing tools requires a key, like every other call, but does not run a market-data tool or spend credits:
1curl --fail-with-body --silent --show-error --max-time 30 \2 https://mcp.wealthnow.io/mcp \3 -H 'Content-Type: application/json' \4 -H 'Accept: application/json, text/event-stream' \5 -H "X-API-Key: $TENGU_API_KEY" \6 -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \7 | jq '.result.tools[].name'Use https://mcp.wealthnow.io/mcp?catalog=full in the same command to inspect
the full public catalogue. A successful listing confirms your key and the
connection; it does not establish your plan's access to a particular dataset.
OpenAPI spec#
A curated public OpenAPI 3.1 spec — only the advertised public tools, never internal or admin routes — is served at:
https://firm.wealthnow.io/api/openapi.json(no key needed to fetch the spec)
Each operation's operationId is the same name the MCP server uses for that
tool, and x-wealthnow-min-plan gives the cheapest plan that can call it
(free, starter, pro or expert).
Load it into Swagger UI, Redoc, or Postman, or lint it:
npx @redocly/cli lint https://firm.wealthnow.io/api/openapi.jsonSDKs#
Published, ready-to-install clients for both languages — same auth, same wallet, same tier gating:
1pip install tengu-firm # Python (import as: import tengu_firm)2npm i tengu-firm # TypeScript / JavaScriptPrefer to generate the client yourself, or pin it to the live spec? Codegen either language:
1# Python2openapi-generator generate -i https://firm.wealthnow.io/api/openapi.json \3 -g python -o tengu-python --additional-properties=packageName=tengu_firm,projectName=tengu-firm4 5# TypeScript6openapi-generator generate -i https://firm.wealthnow.io/api/openapi.json \7 -g typescript-axios -o tengu-tsNo SDK required to start — the API is plain HTTP + JSON, so any client works:
1import os, requests2 3r = requests.get(4 "https://firm.wealthnow.io/api/market/quote/AAPL",5 headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},6 timeout=30,7)8r.raise_for_status()9data = r.json()10print(f"{data['ticker']} @ ${data['price']}")The default MCP URL exposes a starter catalogue. MCP with ?catalog=full
exposes the public tool surface described by the OpenAPI spec.
/api/capabilities can include entries outside that public surface. Treat the
tools/list response from your configured MCP URL as authoritative for the
tool names and input schemas available to your agent.
For Claude Code & AI agents#
Two rules matter more than the rest when an agent drives this API:
1. Disambiguate colliding tickers. Nine symbols are both a crypto asset and a US-listed equity — BTC, ETH, LINK, LTC, COMP, ARB, NEAR, APT, ATOM. On score and ml_prediction tools, pass asset_class=equity or asset_class=crypto explicitly. Responses for those nine carry a ticker_collision note that must be relayed to the user — presenting the equity BTC as Bitcoin is a correctness failure. Requesting the crypto side fails closed with 404 crypto_model_unavailable; that never means "fall back to the equity." Full detail in Ticker collisions.
2. Streams are long-lived, not request/response. The /stream/* tools return Server-Sent Events and stay open. Outside roughly 04:00–20:00 ET they emit heartbeats and no market data — that is correct, not a failure. Don't retry a quiet stream. See Real-Time Streaming.
Beyond that: read /api/capabilities before generating calls rather than guessing paths; retry 429, 502, and a 503 only when it carries Retry-After or "retryable": true; and check X-Credits-Cost / X-Credits-Remaining on each response to track spend.