MCP

Tools

Every tool the Thrive MCP server exposes, with inputs and outputs.

Tools for MCP connection keys

Each tool is the same operation as the matching API endpoint, with the same inputs. Write tools accept an optional idempotency_key argument.

whoamiprofile:read

Key owner's id and display name.

get_quotemarkets:read

Live quote.

get_price_historymarkets:read

Daily price history.

list_simulationssimulations:read

Simulation catalog.

get_portfolioportfolio:read

Virtual portfolio.

list_tradestrading:read

Virtual trade history.

place_virtual_tradetrading:write

Virtual buy/sell (idempotent).

list_projectsprojects:read

Agent Projects.

get_projectprojects:read

One project with items.

create_projectprojects:write

Create a project (idempotent).

get_progressprogress:read

Learning progress.

list_agent_chatsagent:read

Saved chat titles.

ask_thrive_agentagent:write

Ask the Agent (1 credit, idempotent).

list_connection_statusconnections:read

Connected-app status only.

get_credit_usageusage:read

Credit balance and usage.

Tools for Thrive sign-in (OAuth)

whoami

Profile info for the signed-in Thrive user. Read-only. Permission: signed-in Thrive user.

No inputs.

Example call
{
  "method": "tools/call",
  "params": {
    "name": "whoami",
    "arguments": {}
  }
}
Example result
{ "id": "8b0c…", "email": "you@example.com", "full_name": "…", "account_type": "student", "avatar_url": null }

list_alerts

The user's Thrive Gold price alerts. Read-only. Permission: signed-in Thrive user.

activeboolean

Only active (true) or only inactive (false) alerts.

symbolstring

Filter to one ticker.

Example call
{
  "method": "tools/call",
  "params": {
    "name": "list_alerts",
    "arguments": {}
  }
}
Example result
{ "alerts": [ { "id": "…", "symbol": "NVDA", "asset_kind": "stock", "direction": "above", "threshold": 150, "active": true } ] }

create_alert

Creates a Thrive Gold price alert. Writes data. Permission: signed-in Thrive user.

symbolstringrequired

Ticker, e.g. AAPL, BTC-USD.

thresholdnumberrequired

Price threshold.

directionstringrequired

above or below.

asset_kindstring

stock (default), etf, crypto, fx, index, commodity.

notestring

Up to 500 characters.

Example call
{
  "method": "tools/call",
  "params": {
    "name": "create_alert",
    "arguments": {
      "symbol": "…",
      "threshold": 150,
      "direction": "…"
    }
  }
}
Example result
{ "alert": { "id": "…", "symbol": "NVDA", "threshold": 150, "direction": "above" } }

list_notes

The user's notes, most recent first. Read-only. Permission: signed-in Thrive user.

content_typestring

e.g. symbol, lesson, thesis.

content_idstring

Filter to one item.

limitinteger

1–200, default 50.

Example call
{
  "method": "tools/call",
  "params": {
    "name": "list_notes",
    "arguments": {}
  }
}
Example result
{ "notes": [ { "id": "…", "content_type": "symbol", "content_id": "AAPL", "note": "…" } ] }

save_note

Saves (or updates) a note on a symbol, lesson or idea. Writes data. Permission: signed-in Thrive user.

content_typestringrequired

e.g. symbol, lesson, thesis.

content_idstringrequired

e.g. ticker or lesson id.

notestringrequired

Note text.

Example call
{
  "method": "tools/call",
  "params": {
    "name": "save_note",
    "arguments": {
      "content_type": "…",
      "content_id": "…",
      "note": "…"
    }
  }
}
Example result
{ "note": { "id": "…", "content_type": "symbol", "content_id": "AAPL" } }

list_saved

Items the user saved in Thrive. Read-only. Permission: signed-in Thrive user.

kindstring

e.g. company, article, thesis, screen.

limitinteger

1–200.

Example call
{
  "method": "tools/call",
  "params": {
    "name": "list_saved",
    "arguments": {}
  }
}
Example result
{ "items": [ { "id": "…", "kind": "company", "ref": "AAPL", "title": "Apple" } ] }

list_classrooms

Classrooms the user teaches and has joined. Read-only. Permission: signed-in Thrive user.

No inputs.

Example call
{
  "method": "tools/call",
  "params": {
    "name": "list_classrooms",
    "arguments": {}
  }
}
Example result
{ "teaching": [ { "id": "…", "name": "Period 3 Econ", "join_code": "…" } ], "enrolled": [ … ] }

Errors

Tools return isError: true with the same error object as the API (for example missing_scope, rate_limited, insufficient_credits). A revoked, expired or unknown key gets a 401 before any tool runs.