Skip to main content

Connect an AI Assistant


Tealstreet hosts an MCP connector, so an AI assistant you already use can write Custom Modules directly into your account. The same connector is being expanded into Tealstreet's read-only data connector; available permissions are always shown on the consent screen before anything is granted.


Connecting

Add this URL as an MCP server in your assistant:

https://preview.tealstreet.io/api/mcp

There is nothing to generate and no key to copy. The first time your assistant calls it, you will be sent to a Tealstreet consent page listing exactly what it is asking for, and you approve or cancel there.

Whitelabel domains use their own host — connect to the site you actually log in to.

caution

Only connect an assistant you trust. It can create, change and delete your custom modules. It cannot place orders, move funds, or read your exchange API keys.


What it can and cannot do

Available permissions are shown on the consent screen:

PermissionWhat it allows
modules:readList and read your modules
modules:writeCreate, change and delete your modules
market:readRead public market data
onchain:readRead public onchain and address-keyed analytics
account:readRead your private balances, positions, orders, fills and ledger from connected exchange accounts
thirdparty:readRead private data from third-party sources you connect
dashboard:writeCreate MCP dashboard sessions and widgets

None of these scopes can place orders, move funds, or reveal exchange API keys. onchain:read is for public address-keyed analytics, not a user's private wallet history. Private CEX positions, balances, fills, orders, ledger, and reconciliation inputs require account:read plus constrained grants: the authorization request must name the exact account/source set with mcp_grant_constraints, for example {"version":1,"accounts":[{"source":"bybit","accountId":"main"}],"thirdParty":[{"source":"arkham"}]}. Wildcard or user-wide private data grants are refused. A module the assistant writes is still subject to the same sandbox and the same safety screen as code you type yourself.

Self-discovery tools:

ToolPermissionWhat it returns
get_mcp_context_dsl_referencedashboard:writeThe mcp-context/v1 DSL, scopes, callback contract, dashboard piping and examples
list_mcp_context_planesdashboard:writeAvailable context-query planes for the hosted runtime
plan_mcp_context_querydashboard:writeBounded MCP tool steps plus dashboard widget metadata for a query

Agents should call get_mcp_context_dsl_reference before composing dashboard queries. It is the canonical in-protocol reference for the DSL, polling refresh metadata, callback events, and how planned query results are piped into MCP dashboard widgets.

Hosted private CEX account tools currently include:

ToolWhat it returns
list_cex_accountsGranted CEX accounts and latest snapshot timestamps
get_cex_account_balance_snapshotLatest cached balance/equity snapshot for one account
get_cex_account_position_snapshotLatest cached position-history snapshot for one account
get_cex_account_order_snapshotLatest cached order-history snapshot for one account
get_cex_account_historical_fillsBounded venue-keyed historical fill rows for one account
get_cex_account_historical_ordersBounded venue-keyed historical order rows for one account
get_cex_account_historical_positionsBounded historical closed-position rows for one account

These tools read cached account-history rows by constrained source plus accountId. They do not return encrypted exchange configs, API keys, or account-sync blobs. Historical tools read historical_fills, historical_orders, and historical_positions; historical_coverage remains ingestion-private and is not exposed.

Public market data tools currently include:

ToolWhat it returns
list_market_data_sourcesPublicdata source metadata and exchange health
get_public_tickersA bounded ticker snapshot for one publicdata exchange
get_public_tickerOne symbol on one publicdata exchange
get_top_moversTop 24h percentage movers across publicdata exchanges
get_top_volumeTop 24h quote-volume markets across publicdata exchanges
get_top_fundingTop absolute funding-rate markets across publicdata
get_exchange_proxy_candlesHistorical candles through exchange.tealstreet.io's public candle service
get_safe_cex_marketsSafe-cex market metadata through exchange.tealstreet.io's candle service
get_safe_cex_marketOne safe-cex market by symbol or id through the candle service
get_polymarket_eventsPublic Polymarket events with compact market rows
search_polymarket_eventsPublic Polymarket event and tag search
get_polymarket_midpointsBatched public Polymarket CLOB midpoint prices
get_polymarket_order_bookDepth-bounded public Polymarket CLOB book levels
get_polymarket_price_historyPublic Polymarket CLOB price-history points
list_market_data_sourcesWhich public market-data sources this runtime can reach
list_news_sourcesWhich news sources are available to you
get_recent_newsRecent TealNews headlines, filterable by source, handle or symbol

The safe-cex market tools use exchange-services' /candles/api/market-data/markets route and return warnings when a metadata snapshot is missing or stale. get_exchange_proxy_candles is a strict read-only adapter for the exchange-services /candles/api/market-data/candles route. It accepts only validated candle query fields and is not a generic URL proxy. Polymarket tools are public read-only DEX tools. They use Tealstreet's Polymarket /v1/* public route contract when configured, return read/cache metadata instead of claiming exchange freshness, and never expose account data, API keys, or order placement.

Tools that read your private data

These only appear when the grant carries the matching permission, and the private CEX tools additionally require the grant to name the specific accounts they may read.

ToolPermissionWhat it returns
list_cex_accountsaccount:readThe connected accounts this grant may read
get_cex_account_equity_curveaccount:readHourly equity-curve points for one granted account
summarize_cex_account_performanceaccount:readAggregate performance summary for granted accounts
reconcile_cex_account_fillsaccount:readHedge-match reconciliation across granted accounts
get_personal_recent_newsthirdparty:readYour personal news feed from sources you connected
get_arkham_alertsthirdparty:readAlerts delivered to your Arkham webhook

Dashboard tools

dashboard:write lets an assistant build a dashboard you can open in the browser: create_mcp_dashboard_session, list_mcp_dashboard_sessions, get_mcp_dashboard_session, add_mcp_dashboard_widget, update_mcp_dashboard_widget and refresh_mcp_dashboard_widgets. Widgets hold query results, not code. Turning one into a real custom module needs modules:write as well and goes through the normal module safety screen — and a widget built from private account data cannot be exported at all.

Hyperliquid analytics tools currently include:

ToolPermissionWhat it returns
get_hyperliquid_leaderboardonchain:readCrawled Hyperliquid leaderboard rows
get_hyperliquid_large_positionsonchain:readBounded scan for large public positions
get_hyperliquid_address_positionsonchain:readLatest crawled clearinghouse positions for an address
get_hyperliquid_address_fillsonchain:readRecent crawled fills for an address
get_hyperliquid_address_value_curveonchain:readCrawled account-value curve points for an address

The three get_hyperliquid_address_* tools take a public address; none of these read a user's own wallet or any connected exchange account.


Drafts and commits

An assistant writes in two steps, which mirrors how the editor already works — your keystrokes go to local storage instantly and are only stored in your account a couple of seconds later, once they have been screened.

  • Draft — instant, unscreened, and held on the server. A draft is not live: it does not appear in your terminal, does not reach your other devices, and does not survive as a module until it is committed. It does survive your assistant's session ending.
  • Commit — runs the safety screen. If it passes, the module is stored and loads in your terminal and on your other devices.

A module your assistant says it "saved" may only be drafted. That is why the terminal marks it: a module with uncommitted work shows (draft) in the module picker and a notice in the editor. If you see that, ask your assistant to commit.

An open tab picks up a committed module the next time it loads modules — reload the tab if you want to see it immediately.


Why a write gets refused

Refusals are normal and specific; your assistant is told which one it hit.

RefusalWhy
No top-level ComponentThe runtime looks up a function binding called Component. Without it a module loads and renders nothing.
Does not compileChecked before anything is stored, and before the screen is asked. Free and unlimited.
Reserved nameGlobal Module and Override… are system-managed.
Too longA module has to be small enough to typecheck and screen.
Safety screen refused itThe module did something it should not. Your previously committed version is untouched.
Can only run locallyThe screen allowed it but not for storage, so it is not synced. Nothing is lost — the draft stays.
Daily limit reachedA cap on automated changes, so a stuck assistant cannot fill or empty your library.
A newer version existsSomething else changed the module since your assistant last saw it.

Every refusal leaves both the draft and the last committed version intact. An assistant that is told "no" has not lost your work.


Disconnecting

Remove the server from your assistant's configuration, or revoke the connection from Tealstreet's Connected apps settings tab.


Troubleshooting

  1. The consent page asks me to log in — you are signed out. Log in and the page returns.
  2. My assistant says it saved, but nothing is in my terminal — it drafted without committing. Look for the (draft) marker and ask it to commit.
  3. Committed, but the panel still shows the old version — reload the tab.
  4. "Daily limit reached" — the cap resets at midnight UTC.