{"openapi":"3.1.0","info":{"title":"Deep3 Labs MCP Server","version":"1.0.0","description":"Deep3 Labs Model Context Protocol server with some tools gated by [x402](https://x402.org) payment.\n\nFree tools (`resource-read`, `resources-list`) need no payment. Paid tools (`wave-1` ($0.001)) require x402 payment. **Over REST** (`/tools/*`), an unpaid call returns HTTP `402` with requirements in the response body. **Over MCP** (`/`), an unpaid call returns a successful result (`isError: false`) whose `content[0].text` holds the same requirements as inline JSON. In both cases, sign the requirement and retry — REST via the `PAYMENT-SIGNATURE` header, MCP via the `paymentSignature` argument."},"servers":[{"url":"https://mcp.deep3.ai","description":"Server"}],"components":{"schemas":{"Wave1ToolResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Wave1StructuredContent"},"summary":{"type":"string","description":"Human-readable summary, non-authoritative, do not parse."}},"required":["data","summary"],"description":"The inline example shows only the 5-minute horizon. Production responses include all 7 horizons (5, 15, 30, 60, 120, 240, 360 min). See `urn:mcp:wave-1:guide` for complete field coverage.","example":{"data":{"network":"eip155:8453","tokenAddress":"0x940181a94A35A4569E4529A3CDfB74e38FD98631","poolAddress":"0x6cDCB1C4A4D1C3C6D054b27AC5B77e89eafb971d","liquidity_usd":1850000,"guide_uri":"urn:mcp:wave-1:guide","predictions":{"data_points":120,"data_age_min":0.3,"limited_history":false,"mfe_5":0.0144,"mae_5":-0.0061,"rvol_5":0.0098,"semivol_up_5":0.0072,"semivol_down_5":0.0051,"p_tbv_2_1_5":0.63,"p_tbv_down_2_1_5":0.21,"p_clean_5_3_3_5":0.18,"p_clean_down_5_3_3_5":0.04,"p_clean_10_5_5_5":0.06,"p_clean_down_10_5_5_5":0.01,"p_clean_20_10_10_5":0.01,"p_clean_down_20_10_10_5":0,"confidence":"high"}},"summary":"Strong up-bias over 5 min (mfe_5=+1.44%, p_tbv_2_1_5=0.63, AERO on eip155:8453). High confidence."}},"Wave1StructuredContent":{"type":"object","properties":{"network":{"type":"string","description":"Network identifier the prediction was run on (e.g. 'eip155:8453')."},"tokenAddress":{"type":"string","description":"Contract address of the queried token, in the native format for the network (e.g. 0x-prefixed hex for EVM, base58 for Solana)."},"poolAddress":{"type":"string","description":"Liquidity pool address used as the data source for this prediction."},"liquidity_usd":{"type":"number","description":"Total USD value of liquidity in the selected pool at prediction time."},"predictions":{"anyOf":[{"$ref":"#/components/schemas/Wave1ScoresContent"},{"$ref":"#/components/schemas/Wave1InsufficientDataContent"}],"description":"Prediction result — either full scores (Wave1ScoresContent) or an insufficient-data signal (Wave1InsufficientDataContent). The insufficient-data branch is identified by the presence of `insufficient_data: true`."},"guide_uri":{"type":"string","default":"urn:mcp:wave-1:guide","description":"MCP resource URI documenting every field in this payload."}},"required":["network","tokenAddress","poolAddress","liquidity_usd","predictions"],"description":"Structured prediction data."},"Wave1ScoresContent":{"type":"object","properties":{"data_points":{"type":"integer","minimum":0,"description":"Number of recent data points used in the prediction window."},"data_age_min":{"type":"number","description":"Minutes since the most recent data point. High values indicate the data is not current."},"limited_history":{"type":"boolean","description":"True if insufficient history was available, potentially reducing prediction confidence."},"mfe_5":{"type":"number","description":"Max Favorable Excursion: expected largest upward move over the next 5 minutes, as a decimal fraction (0.0144 = +1.44%)."},"mae_5":{"type":"number","description":"Max Adverse Excursion: expected largest drawdown over the next 5 minutes, as a decimal fraction ≤ 0."},"rvol_5":{"type":"number","description":"Expected realized volatility over the next 5 minutes (decimal fraction)."},"semivol_up_5":{"type":"number","description":"Upside half of expected realized volatility over 5 minutes."},"semivol_down_5":{"type":"number","description":"Downside half of expected realized volatility over 5 minutes."},"mfe_15":{"type":"number","description":"Max Favorable Excursion: expected largest upward move over the next 15 minutes, as a decimal fraction (0.0144 = +1.44%)."},"mae_15":{"type":"number","description":"Max Adverse Excursion: expected largest drawdown over the next 15 minutes, as a decimal fraction ≤ 0."},"rvol_15":{"type":"number","description":"Expected realized volatility over the next 15 minutes (decimal fraction)."},"semivol_up_15":{"type":"number","description":"Upside half of expected realized volatility over 15 minutes."},"semivol_down_15":{"type":"number","description":"Downside half of expected realized volatility over 15 minutes."},"mfe_30":{"type":"number","description":"Max Favorable Excursion: expected largest upward move over the next 30 minutes, as a decimal fraction (0.0144 = +1.44%)."},"mae_30":{"type":"number","description":"Max Adverse Excursion: expected largest drawdown over the next 30 minutes, as a decimal fraction ≤ 0."},"rvol_30":{"type":"number","description":"Expected realized volatility over the next 30 minutes (decimal fraction)."},"semivol_up_30":{"type":"number","description":"Upside half of expected realized volatility over 30 minutes."},"semivol_down_30":{"type":"number","description":"Downside half of expected realized volatility over 30 minutes."},"mfe_60":{"type":"number","description":"Max Favorable Excursion: expected largest upward move over the next 60 minutes, as a decimal fraction (0.0144 = +1.44%)."},"mae_60":{"type":"number","description":"Max Adverse Excursion: expected largest drawdown over the next 60 minutes, as a decimal fraction ≤ 0."},"rvol_60":{"type":"number","description":"Expected realized volatility over the next 60 minutes (decimal fraction)."},"semivol_up_60":{"type":"number","description":"Upside half of expected realized volatility over 60 minutes."},"semivol_down_60":{"type":"number","description":"Downside half of expected realized volatility over 60 minutes."},"mfe_120":{"type":"number","description":"Max Favorable Excursion: expected largest upward move over the next 120 minutes, as a decimal fraction (0.0144 = +1.44%)."},"mae_120":{"type":"number","description":"Max Adverse Excursion: expected largest drawdown over the next 120 minutes, as a decimal fraction ≤ 0."},"rvol_120":{"type":"number","description":"Expected realized volatility over the next 120 minutes (decimal fraction)."},"semivol_up_120":{"type":"number","description":"Upside half of expected realized volatility over 120 minutes."},"semivol_down_120":{"type":"number","description":"Downside half of expected realized volatility over 120 minutes."},"mfe_240":{"type":"number","description":"Max Favorable Excursion: expected largest upward move over the next 240 minutes, as a decimal fraction (0.0144 = +1.44%)."},"mae_240":{"type":"number","description":"Max Adverse Excursion: expected largest drawdown over the next 240 minutes, as a decimal fraction ≤ 0."},"rvol_240":{"type":"number","description":"Expected realized volatility over the next 240 minutes (decimal fraction)."},"semivol_up_240":{"type":"number","description":"Upside half of expected realized volatility over 240 minutes."},"semivol_down_240":{"type":"number","description":"Downside half of expected realized volatility over 240 minutes."},"mfe_360":{"type":"number","description":"Max Favorable Excursion: expected largest upward move over the next 360 minutes, as a decimal fraction (0.0144 = +1.44%)."},"mae_360":{"type":"number","description":"Max Adverse Excursion: expected largest drawdown over the next 360 minutes, as a decimal fraction ≤ 0."},"rvol_360":{"type":"number","description":"Expected realized volatility over the next 360 minutes (decimal fraction)."},"semivol_up_360":{"type":"number","description":"Upside half of expected realized volatility over 360 minutes."},"semivol_down_360":{"type":"number","description":"Downside half of expected realized volatility over 360 minutes."},"p_tbv_2_1_5":{"type":"number","description":"Calibrated probability price reaches +2σ before −1σ over 5 minutes (σ scaled to token's own recent volatility × √H). Up-direction conviction."},"p_tbv_down_2_1_5":{"type":"number","description":"Mirror of p_tbv_2_1_5: probability price reaches −2σ before +1σ over 5 minutes. Down-direction conviction."},"p_clean_5_3_3_5":{"type":"number","description":"Calibrated probability of a sustained up move within 5 minutes: reaches +5%, never draws down past −3%, ends ≥ +3%."},"p_clean_down_5_3_3_5":{"type":"number","description":"Mirror: probability of a sustained down move within 5 minutes (−5% reached, no rally past +3%, ends ≤ −3%)."},"p_clean_10_5_5_5":{"type":"number","description":"Calibrated probability of a sustained up move within 5 minutes: reaches +10%, never draws down past −5%, ends ≥ +5%."},"p_clean_down_10_5_5_5":{"type":"number","description":"Mirror: probability of a sustained down move within 5 minutes (−10% reached, no rally past +5%, ends ≤ −5%)."},"p_clean_20_10_10_5":{"type":"number","description":"Calibrated probability of a sustained up move within 5 minutes: reaches +20%, never draws down past −10%, ends ≥ +10%."},"p_clean_down_20_10_10_5":{"type":"number","description":"Mirror: probability of a sustained down move within 5 minutes (−20% reached, no rally past +10%, ends ≤ −10%)."},"p_tbv_2_1_15":{"type":"number","description":"Calibrated probability price reaches +2σ before −1σ over 15 minutes (σ scaled to token's own recent volatility × √H). Up-direction conviction."},"p_tbv_down_2_1_15":{"type":"number","description":"Mirror of p_tbv_2_1_15: probability price reaches −2σ before +1σ over 15 minutes. Down-direction conviction."},"p_clean_5_3_3_15":{"type":"number","description":"Calibrated probability of a sustained up move within 15 minutes: reaches +5%, never draws down past −3%, ends ≥ +3%."},"p_clean_down_5_3_3_15":{"type":"number","description":"Mirror: probability of a sustained down move within 15 minutes (−5% reached, no rally past +3%, ends ≤ −3%)."},"p_clean_10_5_5_15":{"type":"number","description":"Calibrated probability of a sustained up move within 15 minutes: reaches +10%, never draws down past −5%, ends ≥ +5%."},"p_clean_down_10_5_5_15":{"type":"number","description":"Mirror: probability of a sustained down move within 15 minutes (−10% reached, no rally past +5%, ends ≤ −5%)."},"p_clean_20_10_10_15":{"type":"number","description":"Calibrated probability of a sustained up move within 15 minutes: reaches +20%, never draws down past −10%, ends ≥ +10%."},"p_clean_down_20_10_10_15":{"type":"number","description":"Mirror: probability of a sustained down move within 15 minutes (−20% reached, no rally past +10%, ends ≤ −10%)."},"p_tbv_2_1_30":{"type":"number","description":"Calibrated probability price reaches +2σ before −1σ over 30 minutes (σ scaled to token's own recent volatility × √H). Up-direction conviction."},"p_tbv_down_2_1_30":{"type":"number","description":"Mirror of p_tbv_2_1_30: probability price reaches −2σ before +1σ over 30 minutes. Down-direction conviction."},"p_clean_5_3_3_30":{"type":"number","description":"Calibrated probability of a sustained up move within 30 minutes: reaches +5%, never draws down past −3%, ends ≥ +3%."},"p_clean_down_5_3_3_30":{"type":"number","description":"Mirror: probability of a sustained down move within 30 minutes (−5% reached, no rally past +3%, ends ≤ −3%)."},"p_clean_10_5_5_30":{"type":"number","description":"Calibrated probability of a sustained up move within 30 minutes: reaches +10%, never draws down past −5%, ends ≥ +5%."},"p_clean_down_10_5_5_30":{"type":"number","description":"Mirror: probability of a sustained down move within 30 minutes (−10% reached, no rally past +5%, ends ≤ −5%)."},"p_clean_20_10_10_30":{"type":"number","description":"Calibrated probability of a sustained up move within 30 minutes: reaches +20%, never draws down past −10%, ends ≥ +10%."},"p_clean_down_20_10_10_30":{"type":"number","description":"Mirror: probability of a sustained down move within 30 minutes (−20% reached, no rally past +10%, ends ≤ −10%)."},"p_tbv_2_1_60":{"type":"number","description":"Calibrated probability price reaches +2σ before −1σ over 60 minutes (σ scaled to token's own recent volatility × √H). Up-direction conviction."},"p_tbv_down_2_1_60":{"type":"number","description":"Mirror of p_tbv_2_1_60: probability price reaches −2σ before +1σ over 60 minutes. Down-direction conviction."},"p_clean_5_3_3_60":{"type":"number","description":"Calibrated probability of a sustained up move within 60 minutes: reaches +5%, never draws down past −3%, ends ≥ +3%."},"p_clean_down_5_3_3_60":{"type":"number","description":"Mirror: probability of a sustained down move within 60 minutes (−5% reached, no rally past +3%, ends ≤ −3%)."},"p_clean_10_5_5_60":{"type":"number","description":"Calibrated probability of a sustained up move within 60 minutes: reaches +10%, never draws down past −5%, ends ≥ +5%."},"p_clean_down_10_5_5_60":{"type":"number","description":"Mirror: probability of a sustained down move within 60 minutes (−10% reached, no rally past +5%, ends ≤ −5%)."},"p_clean_20_10_10_60":{"type":"number","description":"Calibrated probability of a sustained up move within 60 minutes: reaches +20%, never draws down past −10%, ends ≥ +10%."},"p_clean_down_20_10_10_60":{"type":"number","description":"Mirror: probability of a sustained down move within 60 minutes (−20% reached, no rally past +10%, ends ≤ −10%)."},"p_tbv_2_1_120":{"type":"number","description":"Calibrated probability price reaches +2σ before −1σ over 120 minutes (σ scaled to token's own recent volatility × √H). Up-direction conviction."},"p_tbv_down_2_1_120":{"type":"number","description":"Mirror of p_tbv_2_1_120: probability price reaches −2σ before +1σ over 120 minutes. Down-direction conviction."},"p_clean_5_3_3_120":{"type":"number","description":"Calibrated probability of a sustained up move within 120 minutes: reaches +5%, never draws down past −3%, ends ≥ +3%."},"p_clean_down_5_3_3_120":{"type":"number","description":"Mirror: probability of a sustained down move within 120 minutes (−5% reached, no rally past +3%, ends ≤ −3%)."},"p_clean_10_5_5_120":{"type":"number","description":"Calibrated probability of a sustained up move within 120 minutes: reaches +10%, never draws down past −5%, ends ≥ +5%."},"p_clean_down_10_5_5_120":{"type":"number","description":"Mirror: probability of a sustained down move within 120 minutes (−10% reached, no rally past +5%, ends ≤ −5%)."},"p_clean_20_10_10_120":{"type":"number","description":"Calibrated probability of a sustained up move within 120 minutes: reaches +20%, never draws down past −10%, ends ≥ +10%."},"p_clean_down_20_10_10_120":{"type":"number","description":"Mirror: probability of a sustained down move within 120 minutes (−20% reached, no rally past +10%, ends ≤ −10%)."},"p_tbv_2_1_240":{"type":"number","description":"Calibrated probability price reaches +2σ before −1σ over 240 minutes (σ scaled to token's own recent volatility × √H). Up-direction conviction."},"p_tbv_down_2_1_240":{"type":"number","description":"Mirror of p_tbv_2_1_240: probability price reaches −2σ before +1σ over 240 minutes. Down-direction conviction."},"p_clean_5_3_3_240":{"type":"number","description":"Calibrated probability of a sustained up move within 240 minutes: reaches +5%, never draws down past −3%, ends ≥ +3%."},"p_clean_down_5_3_3_240":{"type":"number","description":"Mirror: probability of a sustained down move within 240 minutes (−5% reached, no rally past +3%, ends ≤ −3%)."},"p_clean_10_5_5_240":{"type":"number","description":"Calibrated probability of a sustained up move within 240 minutes: reaches +10%, never draws down past −5%, ends ≥ +5%."},"p_clean_down_10_5_5_240":{"type":"number","description":"Mirror: probability of a sustained down move within 240 minutes (−10% reached, no rally past +5%, ends ≤ −5%)."},"p_clean_20_10_10_240":{"type":"number","description":"Calibrated probability of a sustained up move within 240 minutes: reaches +20%, never draws down past −10%, ends ≥ +10%."},"p_clean_down_20_10_10_240":{"type":"number","description":"Mirror: probability of a sustained down move within 240 minutes (−20% reached, no rally past +10%, ends ≤ −10%)."},"p_tbv_2_1_360":{"type":"number","description":"Calibrated probability price reaches +2σ before −1σ over 360 minutes (σ scaled to token's own recent volatility × √H). Up-direction conviction."},"p_tbv_down_2_1_360":{"type":"number","description":"Mirror of p_tbv_2_1_360: probability price reaches −2σ before +1σ over 360 minutes. Down-direction conviction."},"p_clean_5_3_3_360":{"type":"number","description":"Calibrated probability of a sustained up move within 360 minutes: reaches +5%, never draws down past −3%, ends ≥ +3%."},"p_clean_down_5_3_3_360":{"type":"number","description":"Mirror: probability of a sustained down move within 360 minutes (−5% reached, no rally past +3%, ends ≤ −3%)."},"p_clean_10_5_5_360":{"type":"number","description":"Calibrated probability of a sustained up move within 360 minutes: reaches +10%, never draws down past −5%, ends ≥ +5%."},"p_clean_down_10_5_5_360":{"type":"number","description":"Mirror: probability of a sustained down move within 360 minutes (−10% reached, no rally past +5%, ends ≤ −5%)."},"p_clean_20_10_10_360":{"type":"number","description":"Calibrated probability of a sustained up move within 360 minutes: reaches +20%, never draws down past −10%, ends ≥ +10%."},"p_clean_down_20_10_10_360":{"type":"number","description":"Mirror: probability of a sustained down move within 360 minutes (−20% reached, no rally past +10%, ends ≤ −10%)."},"p_pump_trap_60":{"type":"number","description":"Calibrated probability price spikes ~+10% then round-trips back through entry within 60 minutes (bull trap / fakeout)."},"p_dump_trap_60":{"type":"number","description":"Mirror: probability of a ~−10% spike that round-trips back up within 60 minutes (bear trap)."},"p_fast_up_60":{"type":"number","description":"Calibrated probability of a clean +10% move whose barrier is first crossed within 20 minutes (60/3) — impulsive breakout, not a slow grind."},"p_fast_down_60":{"type":"number","description":"Mirror: probability of a fast −10% move whose barrier is first crossed within 20 minutes."},"p_pump_trap_120":{"type":"number","description":"Calibrated probability price spikes ~+10% then round-trips back through entry within 120 minutes (bull trap / fakeout)."},"p_dump_trap_120":{"type":"number","description":"Mirror: probability of a ~−10% spike that round-trips back up within 120 minutes (bear trap)."},"p_fast_up_120":{"type":"number","description":"Calibrated probability of a clean +10% move whose barrier is first crossed within 40 minutes (120/3) — impulsive breakout, not a slow grind."},"p_fast_down_120":{"type":"number","description":"Mirror: probability of a fast −10% move whose barrier is first crossed within 40 minutes."},"p_pump_trap_240":{"type":"number","description":"Calibrated probability price spikes ~+10% then round-trips back through entry within 240 minutes (bull trap / fakeout)."},"p_dump_trap_240":{"type":"number","description":"Mirror: probability of a ~−10% spike that round-trips back up within 240 minutes (bear trap)."},"p_fast_up_240":{"type":"number","description":"Calibrated probability of a clean +10% move whose barrier is first crossed within 80 minutes (240/3) — impulsive breakout, not a slow grind."},"p_fast_down_240":{"type":"number","description":"Mirror: probability of a fast −10% move whose barrier is first crossed within 80 minutes."},"p_pump_trap_360":{"type":"number","description":"Calibrated probability price spikes ~+10% then round-trips back through entry within 360 minutes (bull trap / fakeout)."},"p_dump_trap_360":{"type":"number","description":"Mirror: probability of a ~−10% spike that round-trips back up within 360 minutes (bear trap)."},"p_fast_up_360":{"type":"number","description":"Calibrated probability of a clean +10% move whose barrier is first crossed within 120 minutes (360/3) — impulsive breakout, not a slow grind."},"p_fast_down_360":{"type":"number","description":"Mirror: probability of a fast −10% move whose barrier is first crossed within 120 minutes."},"confidence":{"type":["string","null"],"enum":["high","med","low",null],"description":"Reliability regime for this call. `low` = widest uncertainty; treat all numbers as soft. Scale conviction by this value."},"pre_vol":{"type":["number","null"],"description":"Pre-event volatility estimate, if available."},"mfe_5_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mfe_5."},"mfe_5_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mfe_5."},"mfe_5_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mfe_5."},"mfe_5_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mfe_5."},"mfe_15_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mfe_15."},"mfe_15_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mfe_15."},"mfe_15_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mfe_15."},"mfe_15_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mfe_15."},"mfe_30_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mfe_30."},"mfe_30_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mfe_30."},"mfe_30_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mfe_30."},"mfe_30_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mfe_30."},"mfe_60_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mfe_60."},"mfe_60_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mfe_60."},"mfe_60_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mfe_60."},"mfe_60_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mfe_60."},"mfe_120_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mfe_120."},"mfe_120_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mfe_120."},"mfe_120_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mfe_120."},"mfe_120_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mfe_120."},"mfe_240_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mfe_240."},"mfe_240_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mfe_240."},"mfe_240_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mfe_240."},"mfe_240_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mfe_240."},"mfe_360_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mfe_360."},"mfe_360_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mfe_360."},"mfe_360_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mfe_360."},"mfe_360_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mfe_360."},"mae_5_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mae_5."},"mae_5_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mae_5."},"mae_5_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mae_5."},"mae_5_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mae_5."},"mae_15_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mae_15."},"mae_15_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mae_15."},"mae_15_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mae_15."},"mae_15_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mae_15."},"mae_30_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mae_30."},"mae_30_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mae_30."},"mae_30_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mae_30."},"mae_30_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mae_30."},"mae_60_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mae_60."},"mae_60_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mae_60."},"mae_60_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mae_60."},"mae_60_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mae_60."},"mae_120_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mae_120."},"mae_120_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mae_120."},"mae_120_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mae_120."},"mae_120_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mae_120."},"mae_240_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mae_240."},"mae_240_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mae_240."},"mae_240_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mae_240."},"mae_240_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mae_240."},"mae_360_lo80":{"type":["number","null"],"description":"Lower bound of the 80% conformal interval around mae_360."},"mae_360_hi80":{"type":["number","null"],"description":"Upper bound of the 80% conformal interval around mae_360."},"mae_360_lo90":{"type":["number","null"],"description":"Lower bound of the 90% conformal interval around mae_360."},"mae_360_hi90":{"type":["number","null"],"description":"Upper bound of the 90% conformal interval around mae_360."}},"required":["data_points","data_age_min","limited_history","mfe_5","mae_5","rvol_5","semivol_up_5","semivol_down_5","mfe_15","mae_15","rvol_15","semivol_up_15","semivol_down_15","mfe_30","mae_30","rvol_30","semivol_up_30","semivol_down_30","mfe_60","mae_60","rvol_60","semivol_up_60","semivol_down_60","mfe_120","mae_120","rvol_120","semivol_up_120","semivol_down_120","mfe_240","mae_240","rvol_240","semivol_up_240","semivol_down_240","mfe_360","mae_360","rvol_360","semivol_up_360","semivol_down_360","p_tbv_2_1_5","p_tbv_down_2_1_5","p_clean_5_3_3_5","p_clean_down_5_3_3_5","p_clean_10_5_5_5","p_clean_down_10_5_5_5","p_clean_20_10_10_5","p_clean_down_20_10_10_5","p_tbv_2_1_15","p_tbv_down_2_1_15","p_clean_5_3_3_15","p_clean_down_5_3_3_15","p_clean_10_5_5_15","p_clean_down_10_5_5_15","p_clean_20_10_10_15","p_clean_down_20_10_10_15","p_tbv_2_1_30","p_tbv_down_2_1_30","p_clean_5_3_3_30","p_clean_down_5_3_3_30","p_clean_10_5_5_30","p_clean_down_10_5_5_30","p_clean_20_10_10_30","p_clean_down_20_10_10_30","p_tbv_2_1_60","p_tbv_down_2_1_60","p_clean_5_3_3_60","p_clean_down_5_3_3_60","p_clean_10_5_5_60","p_clean_down_10_5_5_60","p_clean_20_10_10_60","p_clean_down_20_10_10_60","p_tbv_2_1_120","p_tbv_down_2_1_120","p_clean_5_3_3_120","p_clean_down_5_3_3_120","p_clean_10_5_5_120","p_clean_down_10_5_5_120","p_clean_20_10_10_120","p_clean_down_20_10_10_120","p_tbv_2_1_240","p_tbv_down_2_1_240","p_clean_5_3_3_240","p_clean_down_5_3_3_240","p_clean_10_5_5_240","p_clean_down_10_5_5_240","p_clean_20_10_10_240","p_clean_down_20_10_10_240","p_tbv_2_1_360","p_tbv_down_2_1_360","p_clean_5_3_3_360","p_clean_down_5_3_3_360","p_clean_10_5_5_360","p_clean_down_10_5_5_360","p_clean_20_10_10_360","p_clean_down_20_10_10_360","p_pump_trap_60","p_dump_trap_60","p_fast_up_60","p_fast_down_60","p_pump_trap_120","p_dump_trap_120","p_fast_up_120","p_fast_down_120","p_pump_trap_240","p_dump_trap_240","p_fast_up_240","p_fast_down_240","p_pump_trap_360","p_dump_trap_360","p_fast_up_360","p_fast_down_360"]},"Wave1InsufficientDataContent":{"type":"object","properties":{"insufficient_data":{"type":"boolean","enum":[true]},"reason":{"type":"string","enum":["insufficient_history","stale"],"description":"Why no forecast was produced for this token (e.g. insufficient recent activity, or data not current)."},"data_points":{"type":"integer","minimum":0,"description":"Number of recent data points available in the prediction window."},"data_age_min":{"type":["number","null"],"description":"Minutes since the most recent data point, or null if unavailable."}},"required":["insufficient_data","reason","data_points"]},"RestErrorResponse":{"type":"object","properties":{"error":{"type":"string","description":"Error message or error code."}},"required":["error"],"additionalProperties":{},"description":"REST validation error. Always contains `error`; may include additional diagnostic fields such as `provided`, `reason`, or `supported_networks` for network validation failures.","example":{"error":"tokenAddress must be a valid EVM address (0x followed by 40 hex chars)"}},"PaymentRequiredResponse":{"type":"object","properties":{"x402Version":{"type":"number","enum":[2]},"error":{"type":"string"},"resource":{"type":"object","properties":{"url":{"type":"string"},"description":{"type":"string"},"mimeType":{"type":"string"},"serviceName":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"iconUrl":{"type":"string"}},"required":["url"]},"accepts":{"type":"array","items":{"type":"object","properties":{"scheme":{"type":"string","example":"exact"},"network":{"type":"string","example":"eip155:8453"},"amount":{"type":"string","description":"Payment amount in the token's smallest denomination. USDC uses 6 decimal places, so '1000' = $0.001 USDC.","example":"1000"},"asset":{"type":"string","description":"ERC-20 contract address of the payment token on the specified network (USDC).","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"payTo":{"type":"string","example":"0xCa4556C3f1FAB4af46a089D6346c86F0CaC63A2D"},"maxTimeoutSeconds":{"type":"integer","example":300},"extra":{"type":["object","null"],"additionalProperties":{}}},"required":["scheme","network","amount","asset","payTo","maxTimeoutSeconds"]}},"extensions":{"type":"object","additionalProperties":{}}},"required":["x402Version","resource","accepts"]},"Wave1Request":{"type":"object","properties":{"network":{"type":"string","pattern":"^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$","examples":["eip155:1","eip155:8453","eip155:56","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"description":"CAIP-2 network ID (namespace:reference). 200+ networks supported across multiple namespaces (e.g. eip155, solana). Not enumerated inline — if a call fails validation, the error response returns the full supported list. To fetch proactively over HTTP: POST https://mcp.deep3.ai/tools/resource-read with body {\"uri\": \"urn:mcp:wave-1:networks\"}. For MCP clients, read the wave-1:networks resource (uri: urn:mcp:wave-1:networks)."},"tokenAddress":{"type":"string","description":"Token contract address. Format depends on the network: for eip155 (EVM) networks, must be 0x-prefixed and 42 characters total (e.g. 0x940181a94A35A4569E4529A3CDfB74e38FD98631); for other networks such as Solana, use the native address format for that chain."},"poolAddress":{"type":"string","description":"Pool address to use; if omitted the highest-liquidity pool is selected automatically"}},"required":["network","tokenAddress"]},"AiToolManifest":{"type":"object","properties":{"type":{"type":"string","example":"https://ercs.ethereum.org/ERCS/erc-8257#tool-manifest-v1"},"name":{"type":"string"},"description":{"type":"string"},"endpoint":{"type":"string"},"creatorAddress":{"type":"string"},"image":{"type":"string"},"inputs":{"type":"object","additionalProperties":{}},"outputs":{"type":"object","additionalProperties":{}},"pricing":{"type":"array","items":{"type":"object","additionalProperties":{}}}},"additionalProperties":{}},"DirectToolSuccessResponse":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{},"description":"Structured tool output data."},"summary":{"type":"string","description":"Human-readable summary, non-authoritative, do not parse."}}},"ResourceReadRequest":{"type":"object","properties":{"uri":{"type":"string","description":"The resource URI to fetch. Available: urn:mcp:wave-1:networks — Full list of supported CAIP-2 network identifiers accepted by the `network` parameter.; urn:mcp:wave-1:guide — How to interpret every field in the wave-1 output payload, with an agent playbook."}},"required":["uri"]},"McpResponse":{"anyOf":[{"type":"object","properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"result":{"$ref":"#/components/schemas/ToolResponse"}},"required":["jsonrpc","id","result"]},{"type":"object","properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","message"]}},"required":["jsonrpc","id","error"]}]},"ToolResponse":{"type":"object","properties":{"content":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["text"]},"text":{"type":"string"}},"required":["type","text"]}},"structuredContent":{"type":"object","additionalProperties":{}},"isError":{"type":"boolean","example":false}},"required":["content"]},"McpRequest":{"type":"object","properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"method":{"type":"string","example":"tools/call"},"params":{"type":"object","additionalProperties":{}}},"required":["jsonrpc","method"],"example":{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"wave-1","arguments":{"network":"eip155:8453","tokenAddress":"0x940181a94A35A4569E4529A3CDfB74e38FD98631"}}}}},"parameters":{}},"paths":{"/tools/wave-1":{"post":{"operationId":"callWave1","summary":"WAVE-1 short-term price-movement forecast for any crypto token. Returns calibrated probabilities and expected up/down price ranges across 7 time horizons (5 min–6 hours) — directional bias, sustained-move odds, expected range, volatility, and reversal/impulse signals — plus pool liquidity, for the token's highest-liquidity pool (or a specified pool). Read wave-1:networks before calling; read wave-1:guide to interpret the fields.","tags":["Tools (paid)"],"parameters":[{"schema":{"type":"string","description":"Signed x402 payment token ($0.001 USDC). On a `402`, the response body contains `x402Version`, a top-level `accepts` array of payment requirements, and a `resource` descriptor. Sign one entry from `accepts` with an x402-compatible library and resend this request with the signed token in this header. MCP transport: pass the signed token as the `paymentSignature` tool argument instead (the MCP handler promotes it to this header automatically)."},"required":false,"description":"Signed x402 payment token ($0.001 USDC). On a `402`, the response body contains `x402Version`, a top-level `accepts` array of payment requirements, and a `resource` descriptor. Sign one entry from `accepts` with an x402-compatible library and resend this request with the signed token in this header. MCP transport: pass the signed token as the `paymentSignature` tool argument instead (the MCP handler promotes it to this header automatically).","name":"PAYMENT-SIGNATURE","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wave1Request"}}}},"responses":{"200":{"description":"WAVE-1 short-term price-movement forecast for any crypto token. Returns calibrated probabilities and expected up/down price ranges across 7 time horizons (5 min–6 hours) — directional bias, sustained-move odds, expected range, volatility, and reversal/impulse signals — plus pool liquidity, for the token's highest-liquidity pool (or a specified pool). Read wave-1:networks before calling; read wave-1:guide to interpret the fields. result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Wave1ToolResponse"}}}},"400":{"description":"Validation error — request body failed schema checks. No payment was charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestErrorResponse"}}}},"402":{"description":"Payment required — $0.001 USDC","headers":{"PAYMENT-REQUIRED":{"schema":{"type":"string","description":"Base64-encoded x402 payment requirement. Mirrors the JSON body; present for x402 spec compliance. Decode with base64 to obtain the payment requirement object. Absent on error-path 402s (e.g. failed settlement)."},"required":false,"description":"Base64-encoded x402 payment requirement. Mirrors the JSON body; present for x402 spec compliance. Decode with base64 to obtain the payment requirement object. Absent on error-path 402s (e.g. failed settlement)."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequiredResponse"}}}}}}},"/.well-known/ai-tool/wave-1.json":{"get":{"operationId":"getManifestWave1","summary":"ERC-8257 manifest for wave-1","description":"Returns the AI tool manifest (ERC-8257) for the `wave-1` tool — name, description, endpoint, creator address, input/output schemas, and pricing.","tags":["Discovery"],"responses":{"200":{"description":"AI tool manifest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiToolManifest"}}}}}}},"/tools/resource-read":{"post":{"operationId":"callResourceRead","summary":"Fetch an MCP resource by URI and return its contents as text. Available resources:\nurn:mcp:wave-1:networks — Full list of supported CAIP-2 network identifiers accepted by the `network` parameter.\nurn:mcp:wave-1:guide — How to interpret every field in the wave-1 output payload, with an agent playbook.\n\nRead urn:mcp:wave-1:networks before calling wave-1 to get valid CAIP-2 network identifiers. Equivalent HTTP path: POST https://mcp.deep3.ai/tools/resource-read with body {\"uri\": \"urn:mcp:wave-1:networks\"}.","tags":["Tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResourceReadRequest"}}}},"responses":{"200":{"description":"Fetch an MCP resource by URI and return its contents as text. Available resources:\nurn:mcp:wave-1:networks — Full list of supported CAIP-2 network identifiers accepted by the `network` parameter.\nurn:mcp:wave-1:guide — How to interpret every field in the wave-1 output payload, with an agent playbook.\n\nRead urn:mcp:wave-1:networks before calling wave-1 to get valid CAIP-2 network identifiers. Equivalent HTTP path: POST https://mcp.deep3.ai/tools/resource-read with body {\"uri\": \"urn:mcp:wave-1:networks\"}. result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectToolSuccessResponse"}}}},"400":{"description":"Validation error — request body failed schema checks. No payment was charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestErrorResponse"}}}}}}},"/.well-known/ai-tool/resource-read.json":{"get":{"operationId":"getManifestResourceRead","summary":"ERC-8257 manifest for resource-read","description":"Returns the AI tool manifest (ERC-8257) for the `resource-read` tool — name, description, endpoint, creator address, input/output schemas, and pricing.","tags":["Discovery"],"responses":{"200":{"description":"AI tool manifest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiToolManifest"}}}}}}},"/tools/resources-list":{"get":{"operationId":"callResourcesList","summary":"List all available MCP resources. Returns each resource's URI, name, description, and MIME type. Use this as a fallback when your MCP client does not support resources/list natively.","tags":["Tools"],"responses":{"200":{"description":"List all available MCP resources. Returns each resource's URI, name, description, and MIME type. Use this as a fallback when your MCP client does not support resources/list natively. result","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"uri":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"mimeType":{"type":"string"}},"required":["uri","name","description","mimeType"]}}},"required":["resources"],"description":"Structured list of available MCP resources."},"summary":{"type":"string"}}}}}},"400":{"description":"Validation error — request body failed schema checks. No payment was charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestErrorResponse"}}}}}}},"/.well-known/ai-tool/resources-list.json":{"get":{"operationId":"getManifestResourcesList","summary":"ERC-8257 manifest for resources-list","description":"Returns the AI tool manifest (ERC-8257) for the `resources-list` tool — name, description, endpoint, creator address, input/output schemas, and pricing.","tags":["Discovery"],"responses":{"200":{"description":"AI tool manifest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiToolManifest"}}}}}}},"/.well-known/wave-1/networks.json":{"get":{"operationId":"getWave1Networks","summary":"Supported CAIP-2 network list for wave-1","description":"Returns the full list of CAIP-2 network IDs accepted by the wave-1 tool. Equivalent to POST /tools/resource-read with body {\"uri\": \"urn:mcp:wave-1:networks\"}, but reachable with a plain GET — no MCP resource-read semantics required.","tags":["Discovery"],"responses":{"200":{"description":"Supported networks","content":{"application/json":{"schema":{"type":"object","properties":{"networks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":["string","null"]}},"required":["id","name"]},"description":"CAIP-2 networks accepted by wave-1"},"count":{"type":"integer","description":"Total number of supported networks"}},"required":["networks","count"]}}}}}}},"/info":{"get":{"operationId":"getServerInfo","summary":"Server info","description":"Returns server metadata, payment config, and available tools.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"mcp_endpoint":{"type":"string","description":"Path to the MCP JSON-RPC 2.0 endpoint. POST requests here."},"docs":{"type":"string","description":"Path to interactive API documentation."},"payTo":{"type":"string","description":"EVM address that receives micropayments for paid tools."},"tools":{"type":"array","items":{"type":"string"},"description":"Names of available tools. Each is also callable via POST /tools/{name}."}},"required":["name","version","description","mcp_endpoint","docs","payTo","tools"]}}}}}}},"/health":{"get":{"operationId":"healthCheck","summary":"Health check","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"wave1":{"type":"object","properties":{"status":{"type":"string","example":"ok"}},"required":["status"],"description":"Status of the upstream wave-1 API"}},"required":["status","wave1"]}}}}}}},"/":{"post":{"operationId":"mcpJsonRpc","summary":"MCP JSON-RPC endpoint","description":"Accepts MCP protocol messages (JSON-RPC 2.0).\n\n**Free tools** (no payment needed): `resource-read`, `resources-list`\n\n**Paid tools** (x402 payment required): `wave-1` ($0.001)\n\nReturns a JSON-RPC 2.0 response. When a paid tool is called without valid payment, returns a successful result (`isError: false`) whose `content[0].text` contains a human-readable message and the x402 payment requirement as an inline JSON block. Sign that requirement with an x402-compatible library and retry the tool call with the signed token as the `paymentSignature` argument.\n\n**Note:** unlike the REST endpoints, an unpaid paid-tool call over MCP does **not** return a 402. It returns `isError: false` with the payment requirement as JSON in `content[0].text`. Retry the same tool call with the signed token in the `paymentSignature` argument.","parameters":[{"schema":{"type":"string","default":"application/json, text/event-stream","description":"MCP requires both `application/json` and `text/event-stream` to be accepted."},"required":false,"description":"MCP requires both `application/json` and `text/event-stream` to be accepted.","name":"accept","in":"header"}],"requestBody":{"description":"MCP JSON-RPC 2.0 request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpRequest"}}}},"responses":{"200":{"description":"MCP JSON-RPC response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpResponse"}}}}}}}},"webhooks":{}}