{"asyncapi":"3.0.0","info":{"title":"f1ow API WebSocket API","version":"0.1.0","description":"JSON-RPC 2.0 over WebSocket (subprotocol \u0027jsonrpc-2.0\u0027). Authenticate at the handshake with \u0027Authorization: Bearer \u003Ckey\u003E\u0027 or the /key/{apikey} path prefix. Tool calls are metered like REST; subscriptions are metered once per pushed change."},"defaultContentType":"application/json","servers":{"api":{"host":"mcp.f1ow.com","protocol":"wss","pathname":"/v1","security":[{"$ref":"#/components/securitySchemes/bearer"}]}},"channels":{"rpc":{"address":"/ws","messages":{"request":{"name":"request","summary":"A JSON-RPC request.","payload":{"type":"object","properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","integer"]},"method":{"enum":["initialize","tools/list","tools/call","ping","subscriptions/subscribe","subscriptions/unsubscribe"]},"params":{"type":"object","description":"tools/call: {name, arguments}. subscriptions/subscribe: {name, arguments, intervalSeconds}. subscriptions/unsubscribe: {subscriptionId}.","properties":{"name":{"enum":["catalysts_calendar","catalysts_economic_calendar","catalysts_etf_flows","derivatives_flow","derivatives_liquidations","derivatives_open_interest","events_prediction_odds","filings_search","flow_levels","flow_orderbook","flow_whale_context","flow_whale_positions","funding_current","market_candles","market_coin_details","market_coins","market_history","market_overview","market_quotes","market_top_movers","market_trending","news_search","onchain_metrics","providers_health","research_opportunities","research_positioning","research_regime","research_token_view","research_trade_plan","sentiment_fear_greed","sentiment_social","sentiment_twitter","ta_technicals","utc_time"]},"arguments":{"type":"object"},"intervalSeconds":{"type":"integer"},"subscriptionId":{"type":"string"}}}},"required":["jsonrpc","method"]}},"response":{"name":"response","summary":"The JSON-RPC response to a request.","payload":{"type":"object","properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","integer"]},"result":{"description":"Same shape as the MCP result for the method; subscribe returns {subscriptionId, intervalSeconds}."},"error":{"type":"object","properties":{"code":{"type":"integer","description":"JSON-RPC code; -32002 payment required (balance spent), -32003 per-connection limit"},"message":{"type":"string"},"data":{}}}},"required":["jsonrpc"]}},"subscriptionUpdate":{"name":"subscriptionUpdate","summary":"A subscribed tool\u0027s result changed.","payload":{"type":"object","properties":{"jsonrpc":{"const":"2.0"},"method":{"const":"notifications/subscriptions/update"},"params":{"type":"object","properties":{"subscriptionId":{"type":"string"},"result":{"type":"object","description":"The tool result (MCP CallToolResult), pushed when it changes."}}}}}},"subscriptionEnded":{"name":"subscriptionEnded","summary":"A subscription stopped (e.g. balance spent).","payload":{"type":"object","properties":{"jsonrpc":{"const":"2.0"},"method":{"const":"notifications/subscriptions/ended"},"params":{"type":"object","properties":{"subscriptionId":{"type":"string"},"reason":{"type":"string"},"message":{"type":"string"}}}}}}}}},"operations":{"receiveRequest":{"action":"receive","channel":{"$ref":"#/channels/rpc"},"messages":[{"$ref":"#/channels/rpc/messages/request"}]},"sendResponse":{"action":"send","channel":{"$ref":"#/channels/rpc"},"messages":[{"$ref":"#/channels/rpc/messages/response"}]},"sendSubscriptionUpdate":{"action":"send","channel":{"$ref":"#/channels/rpc"},"messages":[{"$ref":"#/channels/rpc/messages/subscriptionUpdate"}]},"sendSubscriptionEnded":{"action":"send","channel":{"$ref":"#/channels/rpc"},"messages":[{"$ref":"#/channels/rpc/messages/subscriptionEnded"}]}},"components":{"securitySchemes":{"bearer":{"type":"httpBearerToken"}}}}