Overview

Connect via MCP & SDKs

Your tengu key works over three interfaces — the raw REST API, the Model Context Protocol

Live API

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.

AgentWhat you do
Claude (web, Desktop, mobile)Connect your agent → Claude → Add to Claude, then Connect and Sign in to Wealthnow
Claude Codeclaude mcp add --transport http wealthnow https://mcp.wealthnow.io/mcp, then /mcp → Authenticate
CursorConnect your agent → Cursor → Add to Cursor, then Sign in to Wealthnow in the browser
ChatGPTCreate a custom connector in Developer mode with the MCP URL below, then Sign in to Wealthnow
Anything elseSend 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.

SettingValue
Server URLhttps://mcp.wealthnow.io/mcp
TransportMCP Streamable HTTP (JSON-RPC 2.0)
AuthenticationSign in to Wealthnow (OAuth 2.1 with PKCE), or your tengu_ key in the X-API-Key header
Default catalogueaccount_status plus up to 12 starter tools your plan can call
Full cataloguehttps://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)#

  1. 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.)
  2. Click Add, then Connect. Claude opens Wealthnow in your browser.
  3. 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/mcp

Run /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:

Shell
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:

  1. In ChatGPT, open Settings → Apps (some accounts show Apps & Connectors), then Advanced settings, and turn on Developer mode.
  2. Back on Apps, click Create.
  3. Enter https://mcp.wealthnow.io/mcp as the MCP server URL and choose OAuth.
  4. 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.

  1. Download the Wealthnow desktop extension (or use the Download for Claude Desktop button on Overview).
  2. In Claude Desktop, open Settings → Extensions → Advanced settings and click Install Extension.
  3. Select wealthnow.mcpb and 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.

  1. Open claude_desktop_config.json and add the wealthnow entry to mcpServers, keeping any existing entries.
  2. Replace tengu_YOUR_KEY in the env object with your Wealthnow key.
  3. Save the file, fully quit Claude Desktop, and reopen it.
JSON
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:

Shell
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.json

SDKs#

Published, ready-to-install clients for both languages — same auth, same wallet, same tier gating:

Shell
1pip install tengu-firm      # Python  (import as: import tengu_firm)2npm i tengu-firm            # TypeScript / JavaScript

Prefer to generate the client yourself, or pin it to the live spec? Codegen either language:

Shell
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-ts

No SDK required to start — the API is plain HTTP + JSON, so any client works:

Python
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.