{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_wz7nfmp5m8cj","handle":"tradehub","url":"https://wellknown.network/agents/tradehub","links":{"self":"https://wellknown.network/agents/tradehub/record.json","html":"https://wellknown.network/agents/tradehub","markdown":"https://wellknown.network/agents/tradehub/record.md","api":"https://wellknown.network/api/v1/agents/tradehub","status":"https://wellknown.network/api/v1/agents/tradehub/status","claim":"https://wellknown.network/agents/tradehub/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/tradehub/claim.json","badge":"https://wellknown.network/agents/tradehub/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/tradehub/history","tools":"https://wellknown.network/api/v1/agents/tradehub/tools"},"ard":{"identifier":"urn:air:tradehub.tichat.net:server:tradehub","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"TradeHub","summary":"Perpetual futures trading for AI agents on the user's own exchange accounts, behind one risk gate.","description":"Perpetual futures trading for AI agents on the user's own exchange accounts, behind one risk gate.","publisher":{"name":"net.tichat.tradehub","url":null},"homepage":"https://tradehub.tichat.net/connect","repository":null,"version":"2.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://tradehub.tichat.net/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"https://tradehub.tichat.net/mcp/public","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-27T13:14:06.531656Z","publishedAt":"2026-10-27T13:14:06.531656Z","registryName":"net.tichat.tradehub/tradehub"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"finance.markets","name":"Markets & Trading","confidence":1,"provenance":"derived"},{"slug":"automation.workflows","name":"Workflow Automation","confidence":0.977,"provenance":"derived"},{"slug":"finance.banking","name":"Banking","confidence":0.583,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.569,"provenance":"derived"},{"slug":"documents.contracts","name":"Contracts & Legal","confidence":0.525,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":0.525,"provenance":"derived"},{"slug":"code.execution","name":"Code Execution","confidence":0.51,"provenance":"derived"}],"categories":["automation","code","communication","documents","finance","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-28T21:30:21.036Z","lastProbedAt":"2026-10-28T21:30:21.036Z","statusComputedAt":"2026-10-28T21:33:43.464Z","reliability30d":{"probes":8,"successRate":1,"p50Ms":24,"basis":"mixed","measures":{"availability":"availability (some checks stopped at authentication)","latency":"response time (mixed)","tools":"partially observed","summary":"Some successful checks reached the service and some stopped at an authentication response; figures combine both."},"checks":{"total":8,"ok":8,"authBoundaryOk":4,"serviceOk":4,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-28T21:30:21.036Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":17,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer realm=\"tradehub\", resource_metadata=\"https://tradehub.tichat.net/.well-known/oauth-protected-resource/mcp\", error=\"invalid_token\", scope=\"read\""}},{"at":"2026-10-28T20:24:59.406Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"get_my_trading_permissions","description":"What this agent may do right now on TradeHub: autonomy level (read, propose = every order needs a person's approval, preauth = executes within limits), allowed "},{"name":"get_my_account_balances","description":"Equity, free margin, used margin and open profit or loss on every exchange account the user connected (Hyperliquid, Bybit, Binance, OKX, sandbox), and the total"},{"name":"get_my_open_positions","description":"Every open perpetual futures position on every connected exchange account: side, size, entry, mark, open profit or loss, leverage, and the liquidation price wit"},{"name":"get_my_open_orders","description":"Resting orders on the user's exchange accounts, including protective stop-loss and take-profit orders (is_trigger = true), and trigger entries TradeHub holds (t"},{"name":"get_my_risk_limits_usage","description":"The person's global risk limits (per-trade risk, daily / weekly / monthly loss, drawdown, leverage, open positions) and how much of each is used, across all exc"},{"name":"get_my_trade_history","description":"Recent trades opened through TradeHub with entry, stop, take-profit, leverage and realised profit or loss. Third-party apps see only the trades they opened; the"},{"name":"get_my_agent_performance","description":"How this agent has done: trades opened and closed, wins, realised profit or loss in USD, and its most common refusals with what to do differently, over the last"},{"name":"get_order_request_status","description":"The current state of an order request made with execute_previewed_order: pending_approval, executed, rejected, failed, expired or declined, with fill price and "},{"name":"get_perp_contract_rules","description":"Rules and current funding for one perpetual futures contract on one exchange: mark price, size step, minimum size, price tick, maximum leverage, funding rate pe"},{"name":"get_order_book","description":"Order book levels for one perpetual futures contract on one exchange, best first, as [price, size]. Use to judge liquidity before a large market order. Not for "},{"name":"compare_perp_quotes_across_venues","description":"Use to choose where to trade one perpetual futures coin: bid, ask, spread, trading fee (your account's rate or the published one) and 7-day execution, per excha"},{"name":"compare_funding_rates_across_venues","description":"Current perpetual futures funding rate for one coin on every exchange TradeHub supports, per interval and annualised, with the age of each reading. Use when cho"},{"name":"get_venue_health","description":"Whether each exchange is reachable right now: TradeHub's public price feed per exchange, and, with an account, each connected exchange account's latency, last e"},{"name":"get_technical_indicators_15m","description":"RSI, MACD, Bollinger %B, ATR, EMA trend and volume rank on Hyperliquid's 15-minute candles for one coin, plus the current funding rate. Use as inputs to your ow"},{"name":"get_price_candles","description":"Price history for one coin as candles: open, high, low, close and volume per interval (1m, 5m, 15m, 1h, 4h, 1d), up to 500, oldest first, from Hyperliquid's pub"},{"name":"size_position_by_risk","description":"Turns \"risk 1% of equity, stop 2% below\" into a size in the base coin, rounded down to the venue step and capped by every limit (this agent's, the person's and "},{"name":"set_price_alert","description":"Tell the person when a coin's price reaches a level: one message (Telegram, the event stream and webhooks get a price.alert event), then the alert is done. Use "},{"name":"get_my_price_alerts","description":"The price alerts waiting, and those that fired in the last day with the price that fired them. An app sees only the alerts it created. Use before adding one or "},{"name":"cancel_price_alert","description":"Remove a waiting price alert so it never fires. Use when the user no longer wants it or to make room (at most 20 wait). Not for orders (use cancel_open_order). "},{"name":"preview_perp_order","description":"Check a perpetual futures order with its stop-loss (optional take-profit) against this agent's permissions, the person's limits and the price band, sending noth"},{"name":"execute_previewed_order","description":"Execute a preview from preview_perp_order: re-checked at a fresh price, then sent to the exchange with its stop-loss placed there. Use only after a successful p"},{"name":"cancel_open_order","description":"Cancel one resting order on an exchange. Use to withdraw an unfilled limit order or a take-profit. A held position's stop-loss cannot be cancelled (move it with"},{"name":"tighten_stop_loss","description":"Move a held position's stop-loss closer to the current price, e.g. to breakeven or to lock in profit: the new stop is placed first, then the old one is cancelle"},{"name":"set_take_profit_levels","description":"Replace a held position's take-profits: one level or several (e.g. 50% at 98000, the rest at 101000), each a reduce-only trigger on the exchange, so it can only"},{"name":"set_stop_loss_rule","description":"Make a held position's stop-loss move by itself, only ever toward the price: trailing (it follows the best price at trail_pct behind it) or breakeven (it moves "},{"name":"close_perp_position_reduce_only","description":"Close all or part of a perpetual futures position with a reduce-only market order, so it can never open or flip a position. Use to take profit, cut a loss or re"},{"name":"stop_all_trading_now","description":"Emergency stop for the whole account: cancel every resting order, close every position on every exchange with reduce-only orders, and block new positions. Use o"}],"toolCount":27,"toolsHash":"c751477b305fc8a731a20ec5d90b256d65798e55277a8481fb6b5173c0e81391","serverName":"TradeHub","capabilities":["prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T13:32:34.160Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":18,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer realm=\"tradehub\", resource_metadata=\"https://tradehub.tichat.net/.well-known/oauth-protected-resource/mcp\", error=\"invalid_token\", scope=\"read\""}},{"at":"2026-10-28T12:27:41.781Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":24,"error":null,"detail":{"tools":[{"name":"get_my_trading_permissions","description":"What this agent may do right now on TradeHub: autonomy level (read, propose = every order needs a person's approval, preauth = executes within limits), allowed "},{"name":"get_my_account_balances","description":"Equity, free margin, used margin and open profit or loss on every exchange account the user connected (Hyperliquid, Bybit, Binance, OKX, sandbox), and the total"},{"name":"get_my_open_positions","description":"Every open perpetual futures position on every connected exchange account: side, size, entry, mark, open profit or loss, leverage, and the liquidation price wit"},{"name":"get_my_open_orders","description":"Resting orders on the user's exchange accounts, including protective stop-loss and take-profit orders (is_trigger = true), and trigger entries TradeHub holds (t"},{"name":"get_my_risk_limits_usage","description":"The person's global risk limits (per-trade risk, daily / weekly / monthly loss, drawdown, leverage, open positions) and how much of each is used, across all exc"},{"name":"get_my_trade_history","description":"Recent trades opened through TradeHub with entry, stop, take-profit, leverage and realised profit or loss. Third-party apps see only the trades they opened; the"},{"name":"get_my_agent_performance","description":"How this agent has done: trades opened and closed, wins, realised profit or loss in USD, and its most common refusals with what to do differently, over the last"},{"name":"get_order_request_status","description":"The current state of an order request made with execute_previewed_order: pending_approval, executed, rejected, failed, expired or declined, with fill price and "},{"name":"get_perp_contract_rules","description":"Rules and current funding for one perpetual futures contract on one exchange: mark price, size step, minimum size, price tick, maximum leverage, funding rate pe"},{"name":"get_order_book","description":"Order book levels for one perpetual futures contract on one exchange, best first, as [price, size]. Use to judge liquidity before a large market order. Not for "},{"name":"compare_perp_quotes_across_venues","description":"Use to choose where to trade one perpetual futures coin: bid, ask, spread, trading fee (your account's rate if the exchange reports it, else the published one) "},{"name":"compare_funding_rates_across_venues","description":"Current perpetual futures funding rate for one coin on every exchange TradeHub supports, per interval and annualised, with the age of each reading. Use when cho"},{"name":"get_venue_health","description":"Whether each exchange is reachable right now: TradeHub's public price feed per exchange, and, with an account, each connected exchange account's latency, last e"},{"name":"get_technical_indicators_15m","description":"RSI, MACD, Bollinger %B, ATR, EMA trend and volume rank on Hyperliquid's 15-minute candles for one coin, plus the current funding rate. Use as inputs to your ow"},{"name":"get_price_candles","description":"Price history for one coin as candles: open, high, low, close and volume per interval (1m, 5m, 15m, 1h, 4h, 1d), up to 500, oldest first, from Hyperliquid's pub"},{"name":"size_position_by_risk","description":"Turns \"risk 1% of equity, stop 2% below\" into a size in the base coin, rounded down to the venue step and capped by every limit (this agent's, the person's and "},{"name":"set_price_alert","description":"Tell the person when a coin's price reaches a level: one message (Telegram, the event stream and webhooks get a price.alert event), then the alert is done. Use "},{"name":"get_my_price_alerts","description":"The price alerts waiting, and those that fired in the last day with the price that fired them. An app sees only the alerts it created. Use before adding one or "},{"name":"cancel_price_alert","description":"Remove a waiting price alert so it never fires. Use when the user no longer wants it or to make room (at most 20 wait). Not for orders (use cancel_open_order). "},{"name":"preview_perp_order","description":"Check a perpetual futures order with its stop-loss (optional take-profit) against this agent's permissions, the person's limits and the price band, sending noth"},{"name":"execute_previewed_order","description":"Execute a preview from preview_perp_order: re-checked at a fresh price, then sent to the exchange with its stop-loss placed there. Use only after a successful p"},{"name":"cancel_open_order","description":"Cancel one resting order on an exchange. Use to withdraw an unfilled limit order or a take-profit. A held position's stop-loss cannot be cancelled (move it with"},{"name":"tighten_stop_loss","description":"Move a held position's stop-loss closer to the current price, e.g. to breakeven or to lock in profit: the new stop is placed first, then the old one is cancelle"},{"name":"set_take_profit_levels","description":"Replace a held position's take-profits: one level or several (e.g. 50% at 98000, the rest at 101000), each a reduce-only trigger on the exchange, so it can only"},{"name":"set_stop_loss_rule","description":"Make a held position's stop-loss move by itself, only ever toward the price: trailing (it follows the best price at trail_pct behind it) or breakeven (it moves "},{"name":"close_perp_position_reduce_only","description":"Close all or part of a perpetual futures position with a reduce-only market order, so it can never open or flip a position. Use to take profit, cut a loss or re"},{"name":"stop_all_trading_now","description":"Emergency stop for the whole account: cancel every resting order, close every position on every exchange with reduce-only orders, and block new positions. Use o"}],"toolCount":27,"toolsHash":"db1c7d1e00380a563eddc5b186455a9c678a31c1fa5d2ad7a51879365553a1a7","serverName":"TradeHub","capabilities":["prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T05:30:37.105Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":42,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer realm=\"tradehub\", resource_metadata=\"https://tradehub.tichat.net/.well-known/oauth-protected-resource/mcp\", error=\"invalid_token\", scope=\"read\""}},{"at":"2026-10-28T05:29:58.131Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":25,"error":null,"detail":{"tools":[{"name":"get_my_trading_permissions","description":"What this agent may do right now on TradeHub: autonomy level (read, propose = every order needs a person's approval, preauth = executes within limits), allowed "},{"name":"get_my_account_balances","description":"Equity, free margin, used margin and open profit or loss on every exchange account the user connected (Hyperliquid, Bybit, Binance, OKX, sandbox), and the total"},{"name":"get_my_open_positions","description":"Every open perpetual futures position on every connected exchange account: side, size, entry, mark, open profit or loss, leverage, and the liquidation price wit"},{"name":"get_my_open_orders","description":"Resting orders on the user's exchange accounts, including protective stop-loss and take-profit orders (is_trigger = true), and trigger entries TradeHub holds (t"},{"name":"get_my_risk_limits_usage","description":"The person's global risk limits (per-trade risk, daily / weekly / monthly loss, drawdown, leverage, open positions) and how much of each is used, across all exc"},{"name":"get_my_trade_history","description":"Recent trades opened through TradeHub with entry, stop, take-profit, leverage and realised profit or loss. Third-party apps see only the trades they opened; the"},{"name":"get_my_agent_performance","description":"How this agent has done: trades opened and closed, wins, realised profit or loss in USD, and its most common refusals with what to do differently, over the last"},{"name":"get_order_request_status","description":"The current state of an order request made with execute_previewed_order: pending_approval, executed, rejected, failed, expired or declined, with fill price and "},{"name":"get_perp_contract_rules","description":"Rules and current funding for one perpetual futures contract on one exchange: mark price, size step, minimum size, price tick, maximum leverage, funding rate pe"},{"name":"get_order_book","description":"Order book levels for one perpetual futures contract on one exchange, best first, as [price, size]. Use to judge liquidity before a large market order. Not for "},{"name":"compare_perp_quotes_across_venues","description":"Use to choose where to trade one perpetual futures coin: bid, ask, spread, trading fee (your account's rate if the exchange reports it, else the published one) "},{"name":"compare_funding_rates_across_venues","description":"Current perpetual futures funding rate for one coin on every exchange TradeHub supports, per interval and annualised, with the age of each reading. Use when cho"},{"name":"get_venue_health","description":"Whether each exchange is reachable right now: TradeHub's public price feed per exchange, and, with an account, each connected exchange account's latency, last e"},{"name":"get_technical_indicators_15m","description":"RSI, MACD, Bollinger %B, ATR, EMA trend and volume rank on Hyperliquid's 15-minute candles for one coin, plus the current funding rate. Use as inputs to your ow"},{"name":"get_price_candles","description":"Price history for one coin as candles: open, high, low, close and volume per interval (1m, 5m, 15m, 1h, 4h, 1d), up to 500, oldest first, from Hyperliquid's pub"},{"name":"size_position_by_risk","description":"Turns \"risk 1% of equity, stop 2% below\" into a size in the base coin, rounded down to the venue step and capped by every limit (this agent's, the person's and "},{"name":"preview_perp_order","description":"Check a perpetual futures order with its stop-loss (optional take-profit) against this agent's permissions, the person's limits and the price band, sending noth"},{"name":"execute_previewed_order","description":"Execute a preview from preview_perp_order: re-checked at a fresh price, then sent to the exchange with its stop-loss placed there. Use only after a successful p"},{"name":"cancel_open_order","description":"Cancel one resting order on an exchange. Use to withdraw an unfilled limit order or a take-profit. A held position's stop-loss cannot be cancelled (move it with"},{"name":"tighten_stop_loss","description":"Move a held position's stop-loss closer to the current price, e.g. to breakeven or to lock in profit: the new stop is placed first, then the old one is cancelle"},{"name":"set_take_profit_levels","description":"Replace a held position's take-profits: one level or several (e.g. 50% at 98000, the rest at 101000), each a reduce-only trigger on the exchange, so it can only"},{"name":"set_stop_loss_rule","description":"Make a held position's stop-loss move by itself, only ever toward the price: trailing (it follows the best price at trail_pct behind it) or breakeven (it moves "},{"name":"close_perp_position_reduce_only","description":"Close all or part of a perpetual futures position with a reduce-only market order, so it can never open or flip a position. Use to take profit, cut a loss or re"},{"name":"stop_all_trading_now","description":"Emergency stop for the whole account: cancel every resting order, close every position on every exchange with reduce-only orders, and block new positions. Use o"}],"toolCount":24,"toolsHash":"a022bcea6b89e58ab1d19155863ea89eb11c035c95290423991ea08f04afab2d","serverName":"TradeHub","capabilities":["prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T22:31:44.078Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":28,"error":null,"detail":{"tools":[{"name":"get_my_trading_permissions","description":"What this agent may do right now on TradeHub: autonomy level (read, propose = every order needs a person's approval, preauth = executes within limits), allowed "},{"name":"get_my_account_balances","description":"Equity, free margin, used margin and open profit or loss on every exchange account the user connected (Hyperliquid, Bybit, Binance, OKX, sandbox), and the total"},{"name":"get_my_open_positions","description":"Every open perpetual futures position on every connected exchange account: side, size, entry, mark, open profit or loss, leverage, and the liquidation price wit"},{"name":"get_my_open_orders","description":"Resting orders on the user's exchange accounts, including protective stop-loss and take-profit orders (is_trigger = true), and trigger entries TradeHub holds (t"},{"name":"get_my_risk_limits_usage","description":"The person's global risk limits (per-trade risk, daily / weekly / monthly loss, drawdown, leverage, open positions) and how much of each is used, across all exc"},{"name":"get_my_trade_history","description":"Recent trades opened through TradeHub with entry, stop, take-profit, leverage and realised profit or loss. Third-party apps see only the trades they opened; the"},{"name":"get_my_agent_performance","description":"How this agent has done: trades opened and closed, wins, realised profit or loss in USD, and its most common refusals with what to do differently, over the last"},{"name":"get_order_request_status","description":"The current state of an order request made with execute_previewed_order: pending_approval, executed, rejected, failed, expired or declined, with fill price and "},{"name":"get_perp_contract_rules","description":"Rules and current funding for one perpetual futures contract on one exchange: mark price, size step, minimum size, price tick, maximum leverage, funding rate pe"},{"name":"get_order_book","description":"Order book levels for one perpetual futures contract on one exchange, best first, as [price, size]. Use to judge liquidity before a large market order. Not for "},{"name":"compare_perp_quotes_across_venues","description":"Use to choose where to trade one perpetual futures coin: bid, ask, spread, trading fee (your account's rate if the exchange reports it, else the published one) "},{"name":"compare_funding_rates_across_venues","description":"Current perpetual futures funding rate for one coin on every exchange TradeHub supports, per interval and annualised, with the age of each reading. Use when cho"},{"name":"get_venue_health","description":"Whether each exchange is reachable right now: TradeHub's public price feed per exchange, and, with an account, each connected exchange account's latency, last e"},{"name":"get_technical_indicators_15m","description":"RSI, MACD, Bollinger %B, ATR, EMA trend and volume rank on Hyperliquid's 15-minute candles for one coin, plus the current funding rate. Use as inputs to your ow"},{"name":"get_price_candles","description":"Price history for one coin as candles: open, high, low, close and volume per interval (1m, 5m, 15m, 1h, 4h, 1d), up to 500, oldest first, from Hyperliquid's pub"},{"name":"size_position_by_risk","description":"Turns \"risk 1% of equity, stop 2% below\" into a size in the base coin, rounded down to the venue step and capped by every limit (this agent's, the person's and "},{"name":"preview_perp_order","description":"Check a perpetual futures order with its stop-loss (optional take-profit) against this agent's permissions, the person's limits and the price band, sending noth"},{"name":"execute_previewed_order","description":"Execute a preview from preview_perp_order: re-checked at a fresh price, then sent to the exchange with its stop-loss placed there. Use only after a successful p"},{"name":"cancel_open_order","description":"Cancel one resting order on an exchange. Use to withdraw an unfilled limit order or a take-profit. A held position's stop-loss cannot be cancelled (move it with"},{"name":"tighten_stop_loss","description":"Move a held position's stop-loss closer to the current price, e.g. to breakeven or to lock in profit: the new stop is placed first, then the old one is cancelle"},{"name":"set_take_profit_levels","description":"Replace a held position's take-profits: one level or several (e.g. 50% at 98000, the rest at 101000), each a reduce-only trigger on the exchange, so it can only"},{"name":"set_stop_loss_rule","description":"Make a held position's stop-loss move by itself, only ever toward the price: trailing (it follows the best price at trail_pct behind it) or breakeven (it moves "},{"name":"close_perp_position_reduce_only","description":"Close all or part of a perpetual futures position with a reduce-only market order, so it can never open or flip a position. Use to take profit, cut a loss or re"},{"name":"stop_all_trading_now","description":"Emergency stop for the whole account: cancel every resting order, close every position on every exchange with reduce-only orders, and block new positions. Use o"}],"toolCount":24,"toolsHash":"a022bcea6b89e58ab1d19155863ea89eb11c035c95290423991ea08f04afab2d","serverName":"TradeHub","capabilities":["prompts","resources","tools"],"serverVersion":"","protocolVersion":"2025-06-18"}},{"at":"2026-10-27T22:31:43.993Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":18,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer realm=\"tradehub\", resource_metadata=\"https://tradehub.tichat.net/.well-known/oauth-protected-resource/mcp\", error=\"invalid_token\", scope=\"read\""}}],"tools":null,"package":null,"toolSurface":{"id":"ts_6k2ra2vh9c33","endpointId":"ep_s99evvs7pbnw","hash":"c751477b305fc8a731a20ec5d90b256d65798e55277a8481fb6b5173c0e81391","toolCount":27,"serverName":"TradeHub","serverVersion":"","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-28T20:24:59.417Z","lastSeenAt":"2026-10-28T20:24:59.417Z","observations":1,"toolNames":["get_my_trading_permissions","get_my_account_balances","get_my_open_positions","get_my_open_orders","get_my_risk_limits_usage","get_my_trade_history","get_my_agent_performance","get_order_request_status","get_perp_contract_rules","get_order_book","compare_perp_quotes_across_venues","compare_funding_rates_across_venues","get_venue_health","get_technical_indicators_15m","get_price_candles","size_position_by_risk","set_price_alert","get_my_price_alerts","cancel_price_alert","preview_perp_order","execute_previewed_order","cancel_open_order","tighten_stop_loss","set_take_profit_levels","set_stop_loss_rule","close_perp_position_reduce_only","stop_all_trading_now"],"distinctSurfaces":3},"endpointFacts":[{"id":"ep_kxjahn5t2ubh","url":"https://tradehub.tichat.net/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-28T21:30:21.026Z","auth":{"observedAt":"2026-10-28T21:30:21.069Z","authRequired":true,"scheme":"Bearer","resourceMetadata":{"url":"https://tradehub.tichat.net/.well-known/oauth-protected-resource/mcp","resource":"https://tradehub.tichat.net/mcp","authorizationServers":["https://tradehub.tichat.net"],"scopesSupported":["read"]},"authorizationServer":{"url":"https://tradehub.tichat.net/.well-known/oauth-authorization-server","issuer":"https://tradehub.tichat.net","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":false,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":true},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":true,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-28T21:30:21.130Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"tradehub.tichat.net","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-23T11:34:16.000Z","validTo":"2027-01-21T11:34:15.000Z","daysToExpiry":84,"sanCount":1,"fingerprint256":"70:0B:53:02:0E:6A:19:77:95:3C:34:86:BB:29:36:A0:4D:99:3C:49:29:B8:8F:59:63:12:F0:9C:E0:19:FD:4B"}},{"id":"ep_s99evvs7pbnw","url":"https://tradehub.tichat.net/mcp/public","type":"mcp_streamable_http","factsCheckedAt":"2026-10-28T20:24:59.459Z","auth":{"observedAt":"2026-10-28T20:24:59.484Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-28T20:24:59.519Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"tradehub.tichat.net","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-23T11:34:16.000Z","validTo":"2027-01-21T11:34:15.000Z","daysToExpiry":84,"sanCount":1,"fingerprint256":"70:0B:53:02:0E:6A:19:77:95:3C:34:86:BB:29:36:A0:4D:99:3C:49:29:B8:8F:59:63:12:F0:9C:E0:19:FD:4B"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"net.tichat.tradehub/tradehub","url":"https://registry.modelcontextprotocol.io/v0/servers/net.tichat.tradehub%2Ftradehub","firstSeenAt":"2026-10-27T21:18:44.457Z","fetchedAt":"2026-10-27T21:18:44.457Z","normalizedAt":"2026-10-27T21:18:44.457Z"}]},"firstSeenAt":"2026-10-27T21:18:44.457Z","updatedAt":"2026-10-28T20:30:25.410Z"}