# Wicked MCP (remote · mcp.wickedapi.com)

Whole Wicked suite for agents: market data, SEC filings, wallet checks, risk, identity, memory.

- Trust score: 73/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-04

> **Recent critical change**: Authorization (2026-10-24). See the changelog below before you install this server.

## Components

- remote · `mcp.wickedapi.com`: 73/100 (this document), [markdown](https://verifymcp.io/servers/wickedapi-wicked-mcp/mcp.md), [page](https://verifymcp.io/servers/wickedapi-wicked-mcp/mcp)
- npm · `@wickedlabs/wicked-mcp`: 46/100, [markdown](https://verifymcp.io/servers/wickedapi-wicked-mcp/wickedlabs-wicked-mcp.md), [page](https://verifymcp.io/servers/wickedapi-wicked-mcp/wickedlabs-wicked-mcp)

## Channel facts

- Endpoint: `https://mcp.wickedapi.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.6.4`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-04.

- **Endpoint Security**: 60/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (reputation_unstake).
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 82/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 19374 tokens (~167/item across 116 items; 108 tools + 8 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 43/100
  - Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 98% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 109 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Wicked MCP server?

Wicked MCP is a hosted endpoint at https://mcp.wickedapi.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http wickedapi-wicked-mcp 'https://mcp.wickedapi.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "wickedapi-wicked-mcp": {
      "url": "https://mcp.wickedapi.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "wickedapi-wicked-mcp": {
      "type": "http",
      "url": "https://mcp.wickedapi.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.wickedapi-wicked-mcp]
url = "https://mcp.wickedapi.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "wickedapi-wicked-mcp": {
      "type": "remote",
      "url": "https://mcp.wickedapi.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add wickedapi-wicked-mcp --url 'https://mcp.wickedapi.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  wickedapi-wicked-mcp:
    url: "https://mcp.wickedapi.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "wickedapi-wicked-mcp": {
      "Transport": "http",
      "Url": "https://mcp.wickedapi.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add wickedapi-wicked-mcp -t streamable-http -u 'https://mcp.wickedapi.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "wickedapi-wicked-mcp": {
      "type": "http",
      "url": "https://mcp.wickedapi.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 69, +1)

- [functional] Server version: 0.7.3 → 0.7.4

### 2026-10-24 (score 68, +2)

- [critical regression] Authorization: unverified → fail
- [security] Tool “chain_token_balance” rewrote its description, which is the text the model reads
- [security] Tool “chain_tx” rewrote its description, which is the text the model reads
- [security] Tool “crypto_news” rewrote its description, which is the text the model reads
- [security] Tool “defi_tvl” rewrote its description, which is the text the model reads
- [security] Tool “earnings_calendar” rewrote its description, which is the text the model reads
- [security] Tool “filings_8k_events” rewrote its description, which is the text the model reads
- [security] Tool “filings_filing” rewrote its description, which is the text the model reads
- [security] Tool “filings_freshness” rewrote its description, which is the text the model reads
- [security] Tool “filings_insider_summary” rewrote its description, which is the text the model reads
- [security] Tool “filings_insider_trades” rewrote its description, which is the text the model reads
- [security] Tool “filings_latest_preview” rewrote its description, which is the text the model reads
- [security] Tool “filings_search” rewrote its description, which is the text the model reads
- [security] Tool “funding_oi” rewrote its description, which is the text the model reads
- [security] Tool “fvg” rewrote its description, which is the text the model reads
- [security] Tool “gas” rewrote its description, which is the text the model reads
- [security] Tool “hyperliquid” rewrote its description, which is the text the model reads
- [security] Tool “identity_get_challenge” rewrote its description, which is the text the model reads
- [security] Tool “identity_get_nonce” rewrote its description, which is the text the model reads
- [security] Tool “identity_get_test_key” rewrote its description, which is the text the model reads
- [security] Tool “identity_jwks” rewrote its description, which is the text the model reads
- [security] Tool “identity_register” rewrote its description, which is the text the model reads
- [security] Tool “identity_sandbox_register” rewrote its description, which is the text the model reads
- [security] Tool “identity_status” rewrote its description, which is the text the model reads
- [security] Tool “kalshi_market” rewrote its description, which is the text the model reads
- [security] Tool “kalshi_probability” rewrote its description, which is the text the model reads
- [security] Tool “liquidations” rewrote its description, which is the text the model reads
- [security] Tool “liquidity_levels” rewrote its description, which is the text the model reads
- [security] Tool “long_short_ratio” rewrote its description, which is the text the model reads
- [security] Tool “macro_calendar” rewrote its description, which is the text the model reads
- [security] Tool “market_clock” rewrote its description, which is the text the model reads
- [security] Tool “market_overview” rewrote its description, which is the text the model reads
- [security] Tool “memory_delete” rewrote its description, which is the text the model reads
- [security] Tool “memory_deletions” rewrote its description, which is the text the model reads
- [security] Tool “memory_get” rewrote its description, which is the text the model reads
- [security] Tool “memory_history” rewrote its description, which is the text the model reads
- [security] Tool “memory_prepare” rewrote its description, which is the text the model reads
- [security] Tool “memory_search” rewrote its description, which is the text the model reads
- [security] Tool “memory_store” rewrote its description, which is the text the model reads
- [security] Tool “memory_update” rewrote its description, which is the text the model reads
- [security] Tool “momentum_score” rewrote its description, which is the text the model reads
- [security] Tool “ohlcv” rewrote its description, which is the text the model reads
- [security] Tool “orderbook” rewrote its description, which is the text the model reads
- [security] Tool “paywall_create_route” rewrote its description, which is the text the model reads
- [security] Tool “paywall_delete_route” rewrote its description, which is the text the model reads
- [security] Tool “paywall_get_tenant” rewrote its description, which is the text the model reads
- [security] Tool “paywall_import_routes” rewrote its description, which is the text the model reads
- [security] Tool “paywall_list_routes” rewrote its description, which is the text the model reads
- [security] Tool “paywall_list_settlements” rewrote its description, which is the text the model reads
- [security] Tool “paywall_signup” rewrote its description, which is the text the model reads
- [security] Tool “paywall_update_route” rewrote its description, which is the text the model reads
- [security] Tool “polymarket” rewrote its description, which is the text the model reads
- [security] Tool “price” rewrote its description, which is the text the model reads
- [security] Tool “protocol_health_list_protocols” rewrote its description, which is the text the model reads
- [security] Tool “protocol_health_refresh_all” rewrote its description, which is the text the model reads
- [security] Tool “protocol_health_score” rewrote its description, which is the text the model reads
- [security] Tool “protocol_health_scoreboard” rewrote its description, which is the text the model reads
- [security] Tool “protocol_health_sync_universe” rewrote its description, which is the text the model reads
- [security] Tool “protocol_health_track_protocol” rewrote its description, which is the text the model reads
- [security] Tool “rates” rewrote its description, which is the text the model reads
- [security] Tool “registry_create_api_key” rewrote its description, which is the text the model reads
- [security] Tool “registry_featured_tools” rewrote its description, which is the text the model reads
- [security] Tool “registry_key_info” rewrote its description, which is the text the model reads
- [security] Tool “registry_lookup” rewrote its description, which is the text the model reads
- [security] Tool “registry_onboarding_message” rewrote its description, which is the text the model reads
- [security] Tool “registry_register_tool” rewrote its description, which is the text the model reads
- [security] Tool “registry_report_tool” rewrote its description, which is the text the model reads
- [security] Tool “registry_revoke_key” rewrote its description, which is the text the model reads
- [security] Tool “registry_search_tools” rewrote its description, which is the text the model reads
- [security] Tool “registry_tool_badge” rewrote its description, which is the text the model reads
- [security] Tool “registry_tool_detail” rewrote its description, which is the text the model reads
- [security] Tool “reputation_erc8004” rewrote its description, which is the text the model reads
- [security] Tool “reputation_get_nonce” rewrote its description, which is the text the model reads
- [security] Tool “reputation_history” rewrote its description, which is the text the model reads
- [security] Tool “reputation_leaderboard” rewrote its description, which is the text the model reads
- [security] Tool “reputation_query” rewrote its description, which is the text the model reads
- [security] Tool “reputation_register” rewrote its description, which is the text the model reads
- [security] Tool “reputation_stake” rewrote its description, which is the text the model reads
- [security] Tool “reputation_statement” rewrote its description, which is the text the model reads
- [security] Tool “reputation_status” rewrote its description, which is the text the model reads
- [security] Tool “reputation_tiers” rewrote its description, which is the text the model reads
- [security] Tool “reputation_transparency” rewrote its description, which is the text the model reads
- [security] Tool “reputation_unstake” rewrote its description, which is the text the model reads
- [security] Tool “reputation_withdraw” rewrote its description, which is the text the model reads
- [security] Tool “sanity_check” rewrote its description, which is the text the model reads
- [security] Tool “sanity_check_batch” rewrote its description, which is the text the model reads
- [security] Tool “sanity_get_check” rewrote its description, which is the text the model reads
- [security] Tool “sentiment” rewrote its description, which is the text the model reads
- [security] Tool “token_risk” rewrote its description, which is the text the model reads
- [security] Tool “verdict” rewrote its description, which is the text the model reads
- [security] Tool “volatility” rewrote its description, which is the text the model reads
- [security] Tool “wallet_check” rewrote its description, which is the text the model reads
- [security] Tool “wallet_sanctions_check” rewrote its description, which is the text the model reads
- [security] Tool “web_search” rewrote its description, which is the text the model reads
- [security] Tool “identity_submit_response” rewrote its description, which is the text the model reads
- [security] Tool “atr” rewrote its description, which is the text the model reads
- [security] Tool “basis” rewrote its description, which is the text the model reads
- [security] Tool “broker_sync_balances” rewrote its description, which is the text the model reads
- [security] Tool “broker_sync_connections” rewrote its description, which is the text the model reads
- [security] Tool “broker_sync_positions” rewrote its description, which is the text the model reads
- [security] Tool “broker_sync_prop_firms” rewrote its description, which is the text the model reads
- [security] Tool “broker_sync_register_user” rewrote its description, which is the text the model reads
- [security] Tool “broker_sync_transactions” rewrote its description, which is the text the model reads
- [security] Tool “chain_balance” rewrote its description, which is the text the model reads
- [security] Tool “chain_block” rewrote its description, which is the text the model reads
- [security] Tool “chain_ens” rewrote its description, which is the text the model reads
- [security] Tool “chain_nonce” rewrote its description, which is the text the model reads
- [security] Tool “memory_delete” is now declared destructive
- [security] Tool “paywall_delete_route” is now declared destructive
- [security] Tool “registry_revoke_key” is now declared destructive
- [security] Tool “reputation_unstake” is now declared destructive
- [security] Tool “reputation_withdraw” is now declared destructive
- [functional regression] Schema quality: 122 → 167
- [functional] Schema quality: good → excellent
- [functional] Destructive annotations: All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
- [functional] New prompt “counterparty_check”
- [functional] New prompt “trade_idea_check”
- [functional] New prompt “insider_watch”
- [functional] Server version: 0.7.2 → 0.7.3
- [functional] Server version: 0.7.1 → 0.7.2
- [functional] New tool “paywall_demo_weather”
- [functional] New tool “wallet_portfolio”

### 2026-10-23 (score 66, +1)

- [functional regression] Schema quality: 6926 → 14000
- [functional improvement] Stability: unverified → 0.03
- [functional] Schema quality: excellent → good
- [functional] Server version: 0.6.0 → 0.7.1
- [functional] New tool “broker_sync_register_user”
- [functional] New tool “broker_sync_transactions”
- [functional] New tool “chain_balance”
- [functional] New tool “chain_block”
- [functional] New tool “chain_ens”
- [functional] New tool “chain_nonce”
- [functional] New tool “chain_token_balance”
- [functional] New tool “chain_tx”
- [functional] New tool “crypto_news”
- [functional] New tool “defi_tvl”
- [functional] New tool “earnings_calendar”
- [functional] New tool “funding_oi”
- [functional] New tool “fvg”
- [functional] New tool “gas”
- [functional] New tool “hyperliquid”
- [functional] New tool “kalshi_market”
- [functional] New tool “kalshi_probability”
- [functional] New tool “liquidations”
- [functional] New tool “liquidity_levels”
- [functional] New tool “long_short_ratio”
- [functional] New tool “macro_calendar”
- [functional] New tool “market_clock”
- [functional] New tool “market_overview”
- [functional] New tool “momentum_score”
- [functional] New tool “ohlcv”
- [functional] New tool “orderbook”
- [functional] New tool “polymarket”
- [functional] New tool “price”
- [functional] New tool “protocol_health_list_protocols”
- [functional] New tool “protocol_health_refresh_all”
- [functional] New tool “protocol_health_score”
- [functional] New tool “protocol_health_scoreboard”
- [functional] New tool “protocol_health_sync_universe”
- [functional] New tool “protocol_health_track_protocol”
- [functional] New tool “rates”
- [functional] New tool “registry_key_info”
- [functional] New tool “registry_revoke_key”
- [functional] New tool “reputation_erc8004”
- [functional] New tool “reputation_get_nonce”
- [functional] New tool “reputation_history”
- [functional] New tool “reputation_leaderboard”
- [functional] New tool “reputation_register”
- [functional] New tool “reputation_stake”
- [functional] New tool “reputation_unstake”
- [functional] New tool “reputation_withdraw”
- [functional] New tool “sanity_get_check”
- [functional] New tool “sentiment”
- [functional] New tool “token_risk”
- [functional] New tool “verdict”
- [functional] New tool “volatility”
- [functional] New tool “broker_sync_connections”
- [functional] New tool “broker_sync_balances”
- [functional] New tool “basis”
- [functional] New tool “atr”
- [functional] New tool “web_search”
- [functional] New tool “broker_sync_positions”
- [functional] New tool “broker_sync_prop_firms”

### 2026-10-22 (score 65)

First indexed and scored.

## MCP tools (108)

### `kalshi_probability` (~206 tokens)

[Trading Data API] Free, no signup required. Kalshi prediction-market probabilities. Query by category (returns the most active open markets) or a specific market ticker.

\**Example:** `/v1/kalshi-probability?category=crypto`

Use when you want live Kalshi prediction-market probabilities by category or ticker. Not for a single market's depth (use kalshi_market) or Polymarket (use polymarket).

Behavior: read-only and free; no key or payment needed.

Input parameters:

- `category` (string, required): Optional. One of: crypto, macro, fed-rate, financials, politics, sports, world, companies, climate, science, health, entertainment, elections. Either category or ticker is required.
- `limit` (number): Optional. Max markets to return for a category query (default 25, max 100).
- `ticker` (string): Optional. A specific Kalshi market ticker (e.g. KXBTCD-...).

### `kalshi_market` (~219 tokens)

[Trading Data API] Single Kalshi market depth: orderbook (yes/no levels) + recent trades for a specific ticker.

\**Example:** `/v1/kalshi-market?ticker=KXBTCD-26JUN1315-T64099.99`

Use when you need one Kalshi market's orderbook and recent trades by ticker. Not for browsing markets by category (use kalshi_probability).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `depth` (number): Optional. Orderbook depth per side (default 10, max 100).
- `ticker` (string, required): Required. A Kalshi market ticker (e.g. KXBTCD-26JUN1315-T64099.99).
- `trades` (string): Optional. Recent trades to return (default 20, max 100).

### `funding_oi` (~203 tokens)

[Trading Data API] Aggregated perpetual-futures funding rate & open interest from Binance + Bybit, with 7-day average funding, 24h OI change, and a long/short bias signal.

\**Example:** `/v1/funding-oi?symbol=BTC`

Use when you want perp funding rates and open interest aggregated from Binance and Bybit to gauge leverage and crowding. Not for Hyperliquid-specific data (use hyperliquid) or spot-vs-perp carry (use basis).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `symbol` (string, required): Required. Base crypto symbol (e.g. BTC, ETH, SOL). Mapped to the <SYMBOL>USDT perpetual ticker on Binance/Bybit.

### `long_short_ratio` (~218 tokens)

[Trading Data API] Binance long/short ratios: global account, top-trader account, top-trader position, and taker buy/sell. Companion to funding-oi.

\**Example:** `/v1/long-short-ratio?symbol=BTC&period=1h`

Use when you want Binance positioning ratios (global accounts, top traders, taker buy/sell). Not for funding or open interest (use funding_oi).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `period` (number): Optional. One of 5m,15m,30m,1h,2h,4h,6h,12h,1d (default 5m).
- `symbol` (string, required): Required. Base crypto symbol (e.g. BTC). Mapped to <SYMBOL>USDT.

### `orderbook` (~198 tokens)

[Trading Data API] Top-of-book depth + spread (bps) from Binance, Bybit, or Hyperliquid.

\**Example:** `/v1/orderbook?symbol=BTC&exchange=binance&depth=10`

Use when you need top-of-book depth and spread (bps) on Binance, Bybit or Hyperliquid. Not for a prediction-market book (use kalshi_market).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `depth` (number): Optional. Levels per side (default 10, max 50).
- `exchange` (string): Optional. binance (default), bybit, or hyperliquid.
- `symbol` (string, required): Required. Base crypto symbol (e.g. BTC).

### `basis` (~155 tokens)

[Trading Data API] Spot-vs-perp basis (premium %) with funding-implied annualized carry. Spot from Coinbase; perp marks from Binance + Bybit.

\**Example:** `/v1/basis?symbol=BTC`

Use when you want the spot-vs-perp premium and funding-implied annualized carry for a basis trade. Not for raw funding data (use funding_oi).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `symbol` (string, required): Required. Base crypto symbol (e.g. BTC).

### `hyperliquid` (~172 tokens)

[Trading Data API] Hyperliquid perpetual context: funding (hourly), open interest, mark/oracle/mid price, premium, 24h volume. Not geo-blocked.

\**Example:** `/v1/hyperliquid?symbol=BTC`

Use when you need Hyperliquid perp context: funding, open interest, mark/oracle price, premium and volume. Not for Binance/Bybit aggregates (use funding_oi).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `symbol` (string, required): Required. Hyperliquid coin name (e.g. BTC, ETH, SOL).

### `volatility` (~148 tokens)

[Trading Data API] Deribit volatility: DVOL implied-vol index (30d forward) + latest realized volatility, for BTC or ETH.

\**Example:** `/v1/volatility?currency=BTC`

Use when you want Deribit implied volatility (DVOL) next to realized volatility for BTC or ETH. Not for other assets or ATR-style sizing (use atr).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `currency` (string): Optional. BTC (default) or ETH.

### `sentiment` (~112 tokens)

[Trading Data API] Free, no signup required. Crypto Fear & Greed Index (alternative.me), current reading + optional history.

\**Example:** `/v1/sentiment?limit=7`

Use when you want the crypto Fear & Greed reading as a quick market-mood signal. Not for asset-specific direction (use momentum_score).

Behavior: read-only and free; no key or payment needed.

Input parameters:

- `limit` (number): Optional. Number of days of history (default 1, max 90).

### `defi_tvl` (~223 tokens)

[Trading Data API] DefiLlama data: TVL by chain, stablecoin circulating supply, or yield pools.

\**Example:** `/v1/defi-tvl?view=chains`

Use when you need DeFi TVL by chain, stablecoin supply or yield pools from DefiLlama. Not for the health or risk of one protocol (use protocol_health_score).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `chain` (string): Optional (yields view). Filter pools by chain, e.g. Ethereum.
- `limit` (number): Optional. Rows to return (default 20, max 100).
- `project` (string): Optional (yields view). Filter pools by project, e.g. aave-v3.
- `view` (string): Optional. chains (default), stablecoins, or yields.

### `price` (~186 tokens)

[Trading Data API] Current spot price for crypto (Coinbase) or US equities/ETFs (Alpaca SIP), via the shared routing layer.

\**Example:** `/v1/price?symbol=BTC`

Use when you need the current spot price of one crypto asset or US stock/ETF. Not for history or candles (use ohlcv), or a trading view (use momentum_score or verdict).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `class` (string, required): Optional. stock|crypto — required for symbols outside the curated list.
- `symbol` (string, required): Required. e.g. BTC, ETH, SUI, NVDA, SPY.

### `ohlcv` (~257 tokens)

[Trading Data API] OHLCV candles (oldest-first) for crypto or stocks. Routes to Alpaca SIP / Alpaca-crypto / Coinbase.

\**Example:** `/v1/ohlcv?symbol=NVDA&timeframe=1h&limit=100`

Use when you need historical candles to chart or compute indicators yourself. Not for only the latest price (use price) or a ready-made indicator (atr, fvg, liquidity_levels).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `class` (string): Optional. stock|crypto for non-curated symbols.
- `limit` (number): Optional. Candles to return (default 100, max 300).
- `symbol` (string, required): Required. e.g. BTC, NVDA, SPY.
- `timeframe` (string): Optional. 1m,5m,15m,30m,1h,2h,4h,6h,12h,1D,1W (default 1h).

### `atr` (~252 tokens)

[Trading Data API] Average True Range (Wilder's) + volatility-regime classification (low/normal/high/extreme by historical percentile). Crypto or stocks.

\**Example:** `/v1/atr?symbol=BTC&timeframe=1h&period=14`

Use when you need volatility for position sizing or stops: Wilder ATR plus a low/normal/high/extreme regime. Not for implied volatility for BTC/ETH (use volatility).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `class` (string): Optional. stock|crypto for non-curated symbols.
- `period` (number): Optional. ATR period (default 14).
- `symbol` (string, required): Required. e.g. BTC, NVDA, SPY (or any with &class=).
- `timeframe` (string): Optional. 1m,5m,15m,30m,1h,2h,4h,6h,12h,1D,1W (default 1h).

### `rates` (~167 tokens)

[Trading Data API] US Treasury yield curve (1M–30Y) + recession-indicator spreads (10y-2y, 10y-3m), from FRED.

\**Example:** `/v1/rates`

Use when you need the US Treasury yield curve and recession spreads (10y-2y, 10y-3m). Not for event dates (use macro_calendar).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `series` (string): Optional. A specific FRED series id (e.g. DGS10) for a single value.

### `market_clock` (~163 tokens)

[Trading Data API] US equities market clock (is_open, next_open/close) + upcoming sessions, via Alpaca. Crypto endpoints are 24/7 and unaffected.

\**Example:** `/v1/market-clock`

Use when you need to know whether US equity markets are open and when the next session opens or closes. Not for crypto, which trades 24/7.

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `days` (number): Optional. Upcoming session days to include (default 3, max 30; 0 to omit).

### `market_overview` (~143 tokens)

[Trading Data API] Free, no signup required. CoinGecko global crypto stats (total market cap, 24h volume, BTC/ETH dominance) or top coins by market cap.

\**Example:** `/v1/market-overview`

Use when you want global crypto stats: total market cap, 24h volume, BTC and ETH dominance. Not for a single asset's price (use price).

Behavior: read-only and free; no key or payment needed.

Input parameters:

- `limit` (number): Optional (coins view). Number of coins (default 20, max 100).
- `view` (string): Optional. global (default) or coins.

### `gas` (~93 tokens)

[Trading Data API] Free, no signup required. Ethereum gas oracle (safe/propose/fast gas prices + base fee, in gwei), via Etherscan.

\**Example:** `/v1/gas`

Use when you need current Ethereum gas prices (safe, standard, fast) and the base fee before sending a transaction. Not for other chains.

Behavior: read-only and free; no key or payment needed.

### `fvg` (~325 tokens)

[Trading Data API] Fair Value Gap zones (standard ICT/LuxAlgo) with CE (50%), gap size, age, fill status, distance from price. Standard timeframes match TradingView candles. Crypto or stocks.

\**Example:** `/v1/fvg?symbol=BTC&timeframe=1h`

Use when you want Fair Value Gap zones (ICT-style imbalances) with fill status and distance from price. Not for swing-high/low liquidity pools (use liquidity_levels).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `class` (string): Optional. stock|crypto for non-curated symbols.
- `include_filled` (boolean): Optional. true to include filled FVGs (default false = active only).
- `lookback` (number): Optional. Timeframe candles to analyze (default 120, max 500).
- `min_gap_pct` (number): Optional. Filter out gaps smaller than this % of price (default 0 = all).
- `symbol` (string, required): Required. e.g. BTC, NVDA, SPY (or any with &class=).
- `timeframe` (string): Optional. 1m,5m,15m,30m,1h,2h,4h,6h,12h,1D,1W (default 1h). Matches TradingView candles.

### `liquidity_levels` (~312 tokens)

[Trading Data API] ICT liquidity levels: buy-side liquidity (above swing highs) & sell-side (below swing lows), sweep/taken status, relative-equal pools, and nearest untaken targets. Crypto or stocks.

\**Example:** `/v1/liquidity-levels?symbol=TQQQ&timeframe=1h`

Use when you want buy-side/sell-side liquidity levels and whether they were swept. Not for gap zones (use fvg) or actual liquidation events (use liquidations).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `equal_threshold_pct` (number): Optional. Group swings within this % as relative-equal pools (default 0.1).
- `include_swept` (boolean): Optional. true to include already-taken levels (default false = resting only).
- `lookback` (number): Optional. Candles to analyze (default 300, max 500).
- `swing_length` (number): Optional. Pivot strength — bars each side of a swing (default 5). Tune to match your chart indicator.
- `symbol` (string, required): Required. e.g. BTC, NVDA, TQQQ (or any with &class=).
- `timeframe` (string): Optional. 1m..1W (default 1h).

### `macro_calendar` (~155 tokens)

[Trading Data API] Free, no signup required. Upcoming US macro events (FOMC rate decisions, CPI, jobs report) with verified Fed/BLS dates, days-until, and Kalshi rate-decision odds (cut/hold/hike) for FOMC meetings.

\**Example:** `/v1/macro-calendar`

Use when you want upcoming US macro events (FOMC, CPI, jobs) with verified dates. Not for company earnings (use earnings_calendar).

Behavior: read-only and free; no key or payment needed.

Input parameters:

- `days` (number): Optional. Only events within the next N days.
- `type` (string): Optional. Filter to FOMC, CPI, or NFP.

### `earnings_calendar` (~215 tokens)

[Trading Data API] US equity earnings announcement calendar: report date, before/after-market timing, analyst EPS estimate + count, market cap, and prior-year actual EPS. Sourced live from Nasdaq's public calendar.

\**Example:** `/v1/earnings-calendar?date=2026-07-14&days=3`

Use when you want upcoming US earnings dates, timing and analyst estimates. Not for macro events (use macro_calendar) or filed reports (use filings_search).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `date` (string): Optional. Start date YYYY-MM-DD (default: today).
- `days` (number): Optional. Days to scan forward from date (default 1, max 7).
- `symbol` (string): Optional. Filter to one ticker within the scanned range.

### `wallet_portfolio` (~240 tokens)

[Trading Data API] What a wallet holds: native balance plus major ERC-20 tokens (stablecoins, wrapped assets, large caps) across Ethereum, Base, Arbitrum, Optimism and Polygon, with live USD prices, per-chain and total value. Address or ENS name. Reads the chain directly; tokens outside the curated list are not shown (the response states this).

\**Example:** `/v1/wallet-portfolio?address=vitalik.eth&chain=all`

Use when you want what a wallet holds in one call: native balance plus major ERC-20 tokens across supported chains. Not for one specific token (use chain_token_balance) or counterparty risk (use wallet_check).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `address` (string, required): Required. 0x address or ENS name.
- `chain` (string): Optional. all (default), ethereum, base, arbitrum, optimism or polygon.

### `verdict` (~335 tokens)

[Trading Data API] One-call trading verdict for an asset: LONG, SHORT or NEUTRAL bias with a 0-10 confidence, a one-line thesis, entry, invalidation and two targets, and the trend / momentum / structure / liquidity readings behind it. Mechanical scoring from live candles on two timeframes (EMA stack, MACD, RSI, ADX, swing structure, liquidity sweeps, volume point of control), never a guess. BTC, ETH, SOL, SUI, NVDA, IBIT, COIN, QQQ, TQQQ, DIA.

\**Example:** `/v1/verdict?symbol=BTC&timeframe=1h`

Use when you want one call that returns a LONG/SHORT/NEUTRAL bias with a 0-10 confidence and a one-line thesis. Not for the full structured levels (use momentum_score, an alias of the same engine) or raw inputs (use price, atr).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `symbol` (string, required): Required. One of: BTC, ETH, SOL, SUI, NVDA, IBIT, COIN, QQQ, TQQQ, DIA.
- `timeframe` (string): Optional. Execution timeframe: 15m, 1h, 4h, 1D, 1W (default 1h); the next timeframe up is used as context.

### `momentum_score` (~257 tokens)

[Trading Data API] Alias of /v1/verdict. Multi-asset momentum verdict (bias, confidence, thesis, entry/invalidation/targets, signal readings) from the oracle.py pipeline, run on a separate Python service. Scoped to 10 assets.

\**Example:** `/v1/momentum-score?symbol=BTC&timeframe=1h`

Use when you want a ready-made LONG/SHORT/NEUTRAL view with confidence, thesis and entry/invalidation/targets for a supported asset. Not for raw inputs (use price, atr, funding_oi). Same data as verdict, which is the newer name.

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `symbol` (string, required): Required. One of: BTC, ETH, SOL, SUI, NVDA, IBIT, COIN, QQQ, TQQQ, DIA.
- `timeframe` (string): Optional. 15m, 1h, 4h, 1D, 1W (default 1h).

### `chain_balance` (~227 tokens)

[Trading Data API] Native-token balance (ETH/POL) for any address or ENS name on Ethereum, Base, Arbitrum, Optimism or Polygon. Live from the chain over redundant RPCs — wei plus formatted units.

\**Example:** `/v1/chain-balance?address=vitalik.eth&chain=ethereum`

Use when you need the native-token balance (ETH/POL) of an address or ENS name on Ethereum, Base, Arbitrum, Optimism or Polygon. Not for token balances (use chain_token_balance) or a full holdings view (use wallet_portfolio).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `address` (string, required): Required. A 0x address or an ENS name (e.g. vitalik.eth).
- `chain` (string): Optional. ethereum, base, arbitrum, optimism, polygon (default base).

### `chain_token_balance` (~268 tokens)

[Trading Data API] ERC-20 token balance for an address or ENS name, with token symbol and decimals read from the contract. Ethereum, Base, Arbitrum, Optimism, Polygon.

\**Example:** `/v1/chain-token-balance?address=0xB71C06dAC44c91bc997FB84C247DeEF676F4A9f6&token=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&chain=base`

Use when you need the balance of one ERC-20 token for an address or ENS name. Not for native balance (chain_balance) or everything a wallet holds (wallet_portfolio).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `address` (string, required): Required. Holder: a 0x address or an ENS name.
- `chain` (string): Optional. ethereum, base, arbitrum, optimism, polygon (default base).
- `token` (string, required): Required. ERC-20 contract address.

### `chain_nonce` (~198 tokens)

[Trading Data API] Transaction count (nonce) for an address or ENS name: confirmed nonce plus pending nonce, so an agent can sign the next transaction without a collision.

\**Example:** `/v1/chain-nonce?address=0xB71C06dAC44c91bc997FB84C247DeEF676F4A9f6&chain=base`

Use when you need an address's confirmed and pending transaction count before building a transaction. Not for balances.

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `address` (string, required): Required. A 0x address or an ENS name.
- `chain` (string): Optional. ethereum, base, arbitrum, optimism, polygon (default base).

### `chain_block` (~201 tokens)

[Trading Data API] Block header lookup: number, hash, timestamp, miner, tx count, gas used/limit and base fee. Latest by default, or any block number, safe or finalized.

\**Example:** `/v1/chain-block?chain=base&block=latest`

Use when you need a block header (number, hash, time, miner, gas, base fee), latest by default. Not for a single transaction (use chain_tx).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `block` (string): Optional. A block number, "latest", "safe" or "finalized" (default latest).
- `chain` (string): Optional. ethereum, base, arbitrum, optimism, polygon (default base).

### `chain_ens` (~179 tokens)

[Trading Data API] ENS lookup on Ethereum mainnet in either direction: name to address, or address to primary name.

\**Example:** `/v1/chain-ens?name=vitalik.eth`

Use when you need to resolve an ENS name to an address, or an address to its primary ENS name. Not for non-ENS lookups.

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `address` (string): Optional. An address to reverse-resolve to its primary ENS name.
- `name` (string, required): Optional. An ENS name to resolve (e.g. vitalik.eth). Either name or address is required.

### `chain_tx` (~184 tokens)

[Trading Data API] Transaction lookup by hash: status (success/reverted/pending), block, from/to, value, nonce, gas used, effective gas price and log count.

\**Example:** `/v1/chain-tx?hash=0x...&chain=base`

Use when you need the status and details of a transaction by hash. Not for account-level data (use chain_balance or chain_nonce).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `chain` (string): Optional. ethereum, base, arbitrum, optimism, polygon (default base).
- `hash` (string, required): Required. 0x-prefixed 32-byte transaction hash.

### `polymarket` (~225 tokens)

[Trading Data API] Polymarket prediction markets with live probabilities: question, per-outcome probability, 24h and total volume, liquidity, best bid/ask, one-day price change and end date. Top markets by volume, liquidity or soonest end, or free-text search.

\**Example:** `/v1/polymarket?q=bitcoin&limit=5`

Use when you want Polymarket markets with live per-outcome probabilities and volume. Not for Kalshi markets (use kalshi_probability).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `limit` (number): Optional. 1-25 (default 10).
- `q` (string): Optional. Free-text search, e.g. bitcoin, fed rate, election.
- `sort` (string): Optional. volume (default), liquidity or ending. Ignored when q is set.

### `web_search` (~220 tokens)

[Trading Data API] Real-time web search for agents: ranked results with title, URL, snippet and score, plus an optional synthesized answer. Pay per search; general or news topic.

\**Example:** `/v1/web-search?q=latest+ethereum+upgrade&max_results=5&topic=news`

Use when an agent needs fresh web results with titles, URLs and snippets. Not for verifying a claim (use sanity_check with mode open).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `include_answer` (string): Optional. true (default) or false to skip the synthesized answer.
- `max_results` (string): Optional. 1-10 (default 5).
- `q` (string, required): Required. The search query (max 400 characters).
- `topic` (string): Optional. general (default) or news.

### `crypto_news` (~191 tokens)

[Trading Data API] Latest crypto headlines aggregated from Cointelegraph, Decrypt and Bitcoin Magazine, newest first: title, source, URL, published time and a short summary. Filter by keyword or source.

\**Example:** `/v1/crypto-news?q=etf&limit=10`

Use when you want the latest crypto headlines from major outlets, newest first. Not for market data.

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `limit` (number): Optional. 1-50 (default 20).
- `q` (string): Optional. Keyword filter on title and summary.
- `source` (string): Optional. cointelegraph, decrypt or bitcoinmagazine (default all).

### `liquidations` (~203 tokens)

[Trading Data API] Recent forced liquidations on OKX USDT perpetual swaps for a coin: each event with time, liquidated side, bankruptcy price, size and USD notional, plus long vs short liquidated totals and the largest event. Real exchange data, no estimates.

\**Example:** `/v1/liquidations?coin=ETH&limit=50`

Use when you want recent forced liquidations on OKX USDT perpetuals for a coin, with side and size. Not for liquidity pools (use liquidity_levels).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `coin` (string): Optional. Ticker such as BTC (default), ETH, SOL.
- `limit` (number): Optional. 1-100 (default 50).

### `protocol_health_scoreboard` (~186 tokens)

[Protocol Health Oracle] Public teaser: protocol name, score, and verdict only (no components/history) across the full tracked universe — auto-ingested from DefiLlama (TVL > $1M) plus curated protocols.

Use when you want the free public ranking of every tracked DeFi protocol: name, score and verdict only. Not for the component breakdown for one protocol (use protocol_health_score).

Behavior: read-only and free; no key or payment needed.

Input parameters:

- `category` (string): Optional. Filter by DefiLlama category, e.g. "Liquid Staking".
- `limit` (number): Optional. Rows to return (default 100, max 2000).
- `min_tvl` (string): Optional. Only protocols with TVL >= this USD amount.
- `offset` (string): Optional. Pagination offset (default 0).

### `protocol_health_list_protocols` (~175 tokens)

[Protocol Health Oracle] All tracked protocols with their latest health score and verdict.

Use when you need every tracked protocol with its latest score and verdict. Not for one protocol's details (use protocol_health_score).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `category` (string): Optional. Filter by DefiLlama category.
- `limit` (number): Optional. Rows to return (default 100, max 2000).
- `min_tvl` (string): Optional. Only protocols with TVL >= this USD amount.
- `offset` (string): Optional. Pagination offset (default 0).

### `protocol_health_track_protocol` (~180 tokens)

[Protocol Health Oracle] Track a new protocol. Scored immediately from live GitHub + DeFiLlama data.

Use when a protocol you care about is not tracked yet and you want it scored from live GitHub and DefiLlama data. Not for reading an existing score.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `chain` (string): Optional. Default "ethereum".
- `defillama_slug` (string, required): DeFiLlama protocol slug, e.g. lido.
- `github_repo` (string, required): owner/repo, e.g. lidofinance/core.
- `name` (string, required): Display name, e.g. "Lido".
- `treasury_address` (string): Optional. On-chain treasury address to score (Etherscan balance).

### `protocol_health_score` (~182 tokens)

[Protocol Health Oracle] Latest health score for one protocol: components (GitHub activity, TVL trend, treasury), source details, and score history.

Use when you are vetting one protocol before integrating it and want GitHub activity, TVL trend and treasury components. Not for a ranking (use protocol_health_scoreboard) or token contract risk (use token_risk).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `history` (number): Optional. Number of historical scores to include (default 10, max 100).
- `slug` (string, required): Required (path). The protocol's defillama_slug, e.g. lido.

### `protocol_health_refresh_all` (~79 tokens)

[Protocol Health Oracle] Force an immediate live re-score of all tracked protocols.

Use when you need every tracked protocol re-scored right now instead of waiting for the schedule. Not for a single protocol (read it with protocol_health_score).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

### `protocol_health_sync_universe` (~110 tokens)

[Protocol Health Oracle] Force an immediate sync of the tracked-protocol universe from DefiLlama (TVL > $1M). Runs automatically once/day; use this to trigger it on demand.

Use when you want the tracked universe re-synced from DefiLlama (TVL above $1M), which also runs automatically on a schedule. Not for routine reads.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

### `token_risk` (~237 tokens)

[Token Risk Oracle] Free, public, no signup. Aggregates real on-chain risk signals from GoPlus Security for a token contract — honeypot detection, mint/ownership authority, holder & LP concentration, buy/sell tax, trust-list status — into one transparent risk score. Never a bare safe/unsafe claim: every flag GoPlus didn't return data for stays null, and the raw source data ships alongside the score.

Use when you are about to buy or interact with a token contract and want honeypot, mint authority, holder and LP concentration and tax signals (EVM and Solana). Not for wallet or address risk (use wallet_check) or protocol vetting (use protocol_health_score).

Behavior: read-only and free; no key or payment needed.

Input parameters:

- `address` (string, required): Required. The token contract address (EVM) or mint address (Solana).
- `chain` (string, required): Required. ethereum, bsc, base, polygon, arbitrum, optimism, avalanche, fantom, zksync, linea, scroll, or solana. A numeric EVM chain_id also works.

### `broker_sync_register_user` (~95 tokens)

[Broker Sync API] Register a user with SnapTrade and get a brokerage connection-portal URL.

Use when you are onboarding a user and need a SnapTrade brokerage connection-portal URL. Not for reading data for an already connected user.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `user_id` (string, required): Your application's stable identifier for this end user.

### `broker_sync_connections` (~114 tokens)

[Broker Sync API] List a user's connected brokerage accounts (normalized).

Use when you want a user's connected brokerage accounts in a normalized shape. Not for holdings (use broker_sync_positions) or cash (use broker_sync_balances).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `user_id` (string, required): Required.

### `broker_sync_positions` (~122 tokens)

[Broker Sync API] Real positions across all of a user's connected brokerages, one normalized schema, stamped as_of.

Use when you want a user's real positions across all connected brokerages in one schema. Not for cash and buying power (use broker_sync_balances).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `user_id` (string, required): Required.

### `broker_sync_balances` (~105 tokens)

[Broker Sync API] Cash & buying power per connected account (normalized).

Use when you want cash and buying power per connected account. Not for holdings (use broker_sync_positions).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `user_id` (string, required): Required.

### `broker_sync_transactions` (~128 tokens)

[Broker Sync API] Transaction/activity history across brokerages.

Use when you want a user's transaction and activity history across brokerages. Not for current holdings (use broker_sync_positions).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `from` (string): Optional. YYYY-MM-DD.
- `to` (string): Optional. YYYY-MM-DD.
- `user_id` (string, required): Required.

### `broker_sync_prop_firms` (~126 tokens)

[Broker Sync API] Prop-firm platform integration registry — live-verified methods (Topstep ProjectX API, FTMO MatchTrader bridge) and connection status.

Use when you want the registry of prop-firm platforms and which integration methods are live-verified. Not for a user's own accounts (use broker_sync_connections).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

### `filings_freshness` (~170 tokens)

[Filings Oracle] Proof of real-time: seconds since the last successful SEC poll, age of the newest filing, median and p95 ingest lag (from SEC acceptance time) over the last 200 live filings, last successful poll per form type, and rows stored - Free. Proof of real-time: seconds since the last successful SEC poll, age of the newest filing, median and p95 ingest lag (from SEC acceptance time) over the last 200 live filings, last successful poll per form type, and rows stored.

\**Example:** `/v1/freshness`

Use when you want proof the SEC feed is live: seconds since the last poll and ingest lag. Not for the filings themselves (use filings_search).

Behavior: read-only and free; no key or payment needed.

### `filings_latest_preview` (~130 tokens)

[Filings Oracle] The 10 most recent filings across all form types (form, company, ticker, filed_at only) - Free. The 10 most recent filings across all form types (form, company, ticker, filed_at only). Full structured data, filtering and cursors need /v1/filings.

\**Example:** `/v1/latest-preview`

Use when you want a free glimpse of the 10 most recent filings (form, company, ticker, time). Not for full structured data (use filings_search).

Behavior: read-only and free; no key or payment needed.

### `filings_search` (~440 tokens)

[Filings Oracle] Structured SEC filings feed (8-K, Form 4, Schedule 13D/13G, 10-K, 10-Q), ingested within about a minute of SEC acceptance. Filter by form, ticker, CIK or 8-K item; page with a cursor, or long-poll with wait= to receive the next filing the moment it lands.

\**Example:** `/v1/filings?form=8-K&item=5.02&days=1`

Use when you want structured SEC filings (8-K, Form 4, 13D/13G, 10-K, 10-Q) filtered by ticker, form or time. Not for classified event alerts (use filings_8k_events) or insider trades (use filings_insider_trades).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `cik` (string): Optional. SEC CIK number.
- `days` (number): Optional. Look back N days (default 2, max 90). Ignored when since is set.
- `form` (string): Optional. Comma list: 8-K, 4, SCHEDULE 13D, SCHEDULE 13G, 10-K, 10-Q (amendments included). Default all.
- `item` (string): Optional. 8-K item number, e.g. 5.02 (executive change) or 2.02 (earnings).
- `limit` (number): Optional. Max rows (default 50, max 200).
- `since` (number): Optional. Cursor from a previous response (meta.cursor): returns only filings stored after it, oldest first.
- `ticker` (string): Optional. Ticker symbol, e.g. NVDA.
- `wait` (number): Optional. With since: hold the request up to N seconds (max 25) until a new filing arrives.

### `filings_8k_events` (~307 tokens)

[Filings Oracle] 8-K material-event alerts classified into categories an agent can act on: earnings, exec_change, material_agreement, acquisition_disposition, bankruptcy, delisting, cybersecurity, auditor_or_restatement, control_change, financing, restructuring_impairment, shareholder_vote, governance, reg_fd, other_events. Each event lists every item with its official label.

\**Example:** `/v1/8k-events?category=bankruptcy&days=7`

Use when you want 8-K material events already classified (earnings, exec change, material agreement and similar). Not for all form types (use filings_search).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `category` (string): Optional. One of the category names above. Default all.
- `days` (number): Optional. Look back N days (default 2, max 90). Ignored when since is set.
- `limit` (number): Optional. Max rows (default 50, max 200).
- `since` (number): Optional. Cursor from meta.cursor of a previous response.
- `ticker` (string): Optional. Ticker symbol.
- `wait` (number): Optional. With since: long-poll up to N seconds (max 25).

### `filings_insider_trades` (~431 tokens)

[Filings Oracle] Form 4 insider transactions parsed to one row per trade: insider, role and title, security, code (P purchase, S sale, A grant ...), shares, price, dollar value, shares owned after, direct/indirect, and whether it was under a 10b5-1 plan. Defaults to open-market buys and sells only.

\**Example:** `/v1/insider-trades?side=buy&min_value=100000&exclude_10b5_1=true`

Use when you want individual Form 4 insider transactions, one row per trade. Not for a per-ticker rollup (use filings_insider_summary).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `all_codes` (string): Optional. true to include grants, option exercises, tax withholding and gifts (default false: open-market P and S only).
- `days` (number): Optional. Look back N days (default 7, max 90). Ignored when since is set.
- `exclude_10b5_1` (string): Optional. true to drop trades made under a pre-arranged 10b5-1 plan.
- `limit` (number): Optional. Max rows (default 50, max 200).
- `min_value` (number): Optional. Minimum trade value in USD.
- `owner` (string): Optional. Case-insensitive substring of the insider's name.
- `role` (string): Optional. director, officer or 10pct_owner.
- `side` (string): Optional. buy or sell (open-market purchases / sales).
- `since` (number): Optional. Cursor from meta.cursor of a previous response.
- `ticker` (string): Optional. Issuer ticker symbol.
- `wait` (number): Optional. With since: long-poll up to N seconds (max 25).

### `filings_insider_summary` (~194 tokens)

[Filings Oracle] Insider activity rollup for one ticker over a window: open-market buy and sell counts and dollar totals, net flow, distinct buyers and sellers, a cluster-buying flag (three or more insiders buying), and the largest trades.

\**Example:** `/v1/insider-summary?ticker=NVDA&days=30`

Use when you want a ticker's insider buying and selling rolled up over a window. Not for the underlying trades (use filings_insider_trades).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `days` (number): Optional. Window in days (default 30, max 90).
- `ticker` (string, required): Required. Issuer ticker symbol.

### `filings_filing` (~160 tokens)

[Filings Oracle] One filing by accession number, with its parsed items or insider transactions and the SEC document link.

\**Example:** `/v1/filing?accession=0001731122-26-001341`

Use when you have an accession number and want that one filing with parsed items and the SEC link. Not for searching (use filings_search).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `accession` (string, required): Required. SEC accession number, e.g. 0001731122-26-001341.

### `wallet_sanctions_check` (~232 tokens)

[Wallet Oracle] Is this address on the US Treasury OFAC SDN sanctions list? Exact match against every digital-currency address OFAC publishes (EVM, Tron, Bitcoin and others), with the sanctioned entity, program, and the list's publish date - Free. Is this address on the US Treasury OFAC SDN sanctions list? Exact match against every digital-currency address OFAC publishes (EVM, Tron, Bitcoin and others), with the sanctioned entity, program, and the list's publish date. Chain-agnostic.

\**Example:** `/v1/sanctions-check?address=0x8589427373D6D84E98730D7795D8f6f8731FDA16`

Use when you need a free yes/no on whether an address is on the OFAC SDN sanctions list. Not for broader counterparty risk (use wallet_check).

Behavior: read-only and free; no key or payment needed.

Input parameters:

- `address` (string, required): Required. Any wallet address (0x EVM, Tron T..., Bitcoin, Solana, ...).

### `wallet_check` (~287 tokens)

[Wallet Oracle] Pre-transaction counterparty check for an EVM wallet or contract: OFAC SDN screening, GoPlus malicious-address flags (phishing, drainers, laundering, mixers ...), and a live on-chain profile (EOA / contract / EIP-7702, nonce, balance, ENS, first transaction, contract verification). Returns risk_level, a plain recommendation (do_not_transact / review_before_transacting / no_red_flags_found), every reason with its source, and which sources were unavailable.

\**Example:** `/v1/wallet-check?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&chain=ethereum`

Use when you are about to transact and want a pre-transaction check of a wallet or contract: OFAC, malicious-address flags and on-chain signals. Not for token contract safety (use token_risk).

Behavior: read-only. Priced via x402 (USDC on Base) or free with WICKEDAPI_API_KEY; with neither, you get HTTP 402 with the decoded price in payment_required (a price quote, not a failure).

Input parameters:

- `address` (string, required): Required. A 0x address.
- `chain` (string): Optional. ethereum, base, arbitrum, optimism, polygon (default base).

### `reputation_status` (~113 tokens)

[Wicked Reputation] An agent's current reputation: tier, active/unbonding stake, score, slash count, founding-member badge. http_status 404 means the wallet never registered — treat as tier 'unranked'.

Use when you want one agent's tier, stake, reputation score and slash count before dealing with it. Not for the event history (use reputation_statement) or a ranking (use reputation_leaderboard).

Behavior: read-only.

Input parameters:

- `wallet` (string, required): The 0x wallet address.

### `reputation_statement` (~101 tokens)

[Wicked Reputation] An agent's full position plus real event ledger (stakes, unstakes, withdrawals, slashes). Does not include WickedAPI call volume or fees — see the `note` field.

Use when you need an agent's full position and ledger of stakes, unstakes, withdrawals and slashes. Not for a quick tier check (use reputation_status).

Behavior: read-only.

Input parameters:

- `wallet` (string, required): The 0x wallet address.

### `reputation_query` (~208 tokens)

[Wicked Reputation] Search/rank registered agents by tier, stake, reputation or slash history. Every filter is a typed query param.

Use when you want to filter or rank agents by tier, stake, reputation or slash history. Not for one known wallet (use reputation_status).

Behavior: read-only.

Input parameters:

- `founding_member` (boolean): True to only show founding members.
- `limit` (number): 1-200, default 20.
- `max_stake` (number): Maximum active stake (USDC).
- `min_reputation` (number): Minimum reputation score.
- `min_slash_count` (number): Minimum slash events (1 finds agents ever slashed).
- `min_stake` (number): Minimum active stake (USDC).
- `sort` (string): stake_amount | reputation_score | slash_count | registered_at, prefixed "-" (desc, default) or "+" (asc).
- `tier` (string): Exact tier name, e.g. "gold".

### `reputation_tiers` (~79 tokens)

[Wicked Reputation] Live tier thresholds and benefits (min stake, rate-limit multiplier, fee discount). Read at call time — thresholds are admin-configurable.

Use when you want the live tier thresholds and benefits (minimum stake, rate-limit multiplier, fee discount). Not for a specific agent's tier (use reputation_status).

Behavior: read-only.

### `reputation_transparency` (~75 tokens)

[Wicked Reputation] Live transparency numbers: treasury address, custody model, unbonding cooldown, total stake, agents, slash events, founding-slot counts.

Use when you want the treasury address, custody model, unbonding cooldown and totals, for example before staking. Not for per-agent data.

Behavior: read-only.

### `reputation_leaderboard` (~80 tokens)

[Wicked Reputation] Public leaderboard: every agent's current active stake, tier and slash count. Free.

Use when you want the public ranking of agents by active stake, with tier and slash count. Not for filtered searches (use reputation_query).

Behavior: read-only.

Input parameters:

- `limit` (number): Max rows (default set by the service).

### `reputation_history` (~77 tokens)

[Wicked Reputation] An agent's history of reputation/tier changes over time. Free. 404 means the wallet never registered.

Use when you want how one agent's reputation and tier changed over time. Not for current standing (use reputation_status).

Behavior: read-only.

Input parameters:

- `wallet` (string, required): The 0x wallet address.

### `reputation_erc8004` (~90 tokens)

[Wicked Reputation] Cross-reference a wallet against the open ERC-8004 Identity and Reputation registries (read-only). Free.

Use when you want to cross-reference a wallet against the open ERC-8004 identity and reputation registries. Not for Wicked's own staking data (use reputation_status).

Behavior: read-only.

Input parameters:

- `wallet` (string, required): The 0x wallet address.

### `reputation_get_nonce` (~120 tokens)

[Wicked Reputation] Step 1 of every signed Reputation call (register, stake, unstake, withdraw): a one-time nonce plus the exact message to sign. Each signed call needs a fresh nonce.

Use when you are about to register, stake, unstake or withdraw and need the one-time message to sign. Not for read-only lookups, which need no signature.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `wallet` (string, required): The 0x wallet address.

### `reputation_register` (~157 tokens)

[Wicked Reputation] Register your wallet as an agent (no stake required). Needs your signature over reputation_get_nonce's message; this tool never signs.

Use when you want to register your wallet as an agent, with your own signature over the nonce message. Not for staking (use reputation_stake after funding the treasury).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `nonce` (string, required): Nonce from a FRESH reputation_get_nonce call.
- `signature` (string, required): 0x-prefixed ECDSA signature (EIP-191) over that nonce's message, from YOUR wallet.
- `wallet` (string, required): Your 0x wallet address on Base.

### `reputation_stake` (~220 tokens)

[Wicked Reputation] Record a USDC stake that YOU already sent on-chain to the treasury (see reputation_transparency for the address). Real funds: send the transfer from your own wallet first, then pass its tx_hash with a signed nonce. This tool never moves funds or signs.

Use when you already sent USDC on-chain to the treasury and want that stake recorded, with its transaction hash and a signed nonce. Not for moving funds, which this server never does.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `amount` (number, required): USDC amount staked.
- `nonce` (string, required): Nonce from a FRESH reputation_get_nonce call.
- `signature` (string, required): 0x-prefixed ECDSA signature (EIP-191) over that nonce's message, from YOUR wallet.
- `tx_hash` (string, required): Hash of your on-chain USDC transfer to the treasury.
- `wallet` (string, required): Your 0x wallet address on Base.

### `reputation_unstake` (~181 tokens)

[Wicked Reputation] Start the unbonding period for `amount` of your active stake. It stops counting toward tier/reputation immediately; withdraw after the cooldown (see reputation_transparency). Needs a signed nonce.

Use when you want to start the unbonding period for part of your active stake, with a signed nonce. Not for collecting funds (use reputation_withdraw once the cooldown has passed).

Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.

Input parameters:

- `amount` (number, required): USDC amount to unbond.
- `nonce` (string, required): Nonce from a FRESH reputation_get_nonce call.
- `signature` (string, required): 0x-prefixed ECDSA signature (EIP-191) over that nonce's message, from YOUR wallet.
- `wallet` (string, required): Your 0x wallet address on Base.

### `reputation_withdraw` (~159 tokens)

[Wicked Reputation] Pay out every unbonding stake whose cooldown has elapsed, in one on-chain transfer to your wallet. Safe to retry if a payout fails. Needs a signed nonce.

Use when your unbonding cooldown has elapsed and you want every matured stake paid out to your wallet. Not for starting the unbonding (use reputation_unstake).

Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.

Input parameters:

- `nonce` (string, required): Nonce from a FRESH reputation_get_nonce call.
- `signature` (string, required): 0x-prefixed ECDSA signature (EIP-191) over that nonce's message, from YOUR wallet.
- `wallet` (string, required): Your 0x wallet address on Base.

### `registry_search_tools` (~248 tokens)

[Wicked Registry] Search x402/MCP tools by real reliability data (uptime, latency, schema conformance). Works via x402 (402 carries payment instructions) or a free API key (pass api_key, or set REGISTRY_API_KEY). No key yet? Call registry_onboarding_message then registry_create_api_key to get one yourself. For a quick free check of a known tool, use registry_lookup.

Use when you want to find x402/MCP tools filtered by category, protocol or minimum reliability score. Not for a quick free check of a known tool (use registry_lookup).

Behavior: read-only.

Input parameters:

- `api_key` (string): Free Wicked Registry API key (wr_...). Overrides REGISTRY_API_KEY.
- `category` (string): e.g. "data", "crypto".
- `limit` (number): 1-200, default 50.
- `min_score` (number): Minimum composite score 0-100; unchecked tools are excluded once set.
- `protocol` (string): "x402", "mcp" or "rest".
- `sort` (string): "score" (default), "latency" or "recency".

### `registry_tool_detail` (~115 tokens)

[Wicked Registry] One tool's full score breakdown, component history and recent real health checks. x402 or a free API key.

Use when you want one tool's full score breakdown and recent real health checks. Not for finding tools (use registry_search_tools or registry_lookup).

Behavior: read-only.

Input parameters:

- `api_key` (string): Free Wicked Registry API key (wr_...). Overrides REGISTRY_API_KEY.
- `tool_id` (string, required): Registry id from registry_lookup / registry_search_tools / registry_featured_tools.

### `registry_lookup` (~170 tokens)

[Wicked Registry] Free lookup: find a tool's id and headline reliability score by name or URL fragment (q), exact endpoint URL (endpoint) or category. No key or payment. Use it to check a tool before your agent pays it; follow with registry_tool_badge or registry_tool_detail.

Use when you want a free lookup of a tool's id and headline score by name, URL fragment or exact endpoint before you call it. Not for full detail (use registry_tool_detail).

Behavior: read-only.

Input parameters:

- `category` (string)
- `endpoint` (string): Exact endpoint URL of the tool you are about to call.
- `limit` (number): 1-25, default 10.
- `q` (string): Name or URL fragment, at least 2 characters.

### `registry_onboarding_message` (~179 tokens)

[Wicked Registry] Step 1 of self-onboarding. Returns the exact message YOU must sign (EIP-191 personal_sign) plus its timestamp, valid for about an hour. action=api_key (needs wallet) for a free API key, or action=register (needs name and endpoint_url) to list your own tool. This tool never signs anything.

Use when you are starting self-serve onboarding and need the exact message to sign. Not for when you already have a signature (use registry_create_api_key or registry_register_tool).

Behavior: read-only.

Input parameters:

- `action` (string, required)
- `endpoint_url` (string): Tool endpoint URL (required for register).
- `name` (string): Tool name (required for register).
- `wallet` (string): Your 0x wallet address (required for api_key).

### `registry_create_api_key` (~203 tokens)

[Wicked Registry] Step 2 of getting a free API key. Submit the wallet, the timestamp and YOUR signature over the message from registry_onboarding_message(action=api_key). The key (wr_...) is returned once - store it and pass it as api_key to registry_search_tools / registry_tool_detail. Up to 3 active keys per wallet; past the daily cap calls fall back to x402.

Use when you signed the onboarding message and want a free Registry API key (shown once). Not for inspecting a key (use registry_key_info).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `label` (string): Optional label for the key.
- `signature` (string, required): 0x-prefixed ECDSA signature over the message.
- `timestamp` (string, required): The timestamp returned with the message.
- `wallet` (string, required): 0x wallet that signed the message.

### `registry_key_info` (~96 tokens)

[Wicked Registry] Metadata and usage for a Registry API key (wr_...): label, created time, call counts. Pass api_key, or set REGISTRY_API_KEY.

Use when you want a Registry API key's label, creation time and usage counts. Not for creating or revoking a key.

Behavior: read-only.

Input parameters:

- `api_key` (string): Registry API key to inspect. Overrides REGISTRY_API_KEY.

### `registry_revoke_key` (~108 tokens)

[Wicked Registry] PERMANENTLY revoke a Registry API key (the one presented). Use if a key leaked. Pass api_key, or set REGISTRY_API_KEY.

Use when a Registry API key leaked or is no longer needed and must be disabled permanently. Not for inspecting a key (use registry_key_info).

Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.

Input parameters:

- `api_key` (string): Registry API key to revoke. Overrides REGISTRY_API_KEY.

### `registry_featured_tools` (~55 tokens)

[Wicked Registry] Top scored active tools. Public and free.

Use when you want the top-scored active tools with no key or payment. Not for filtered search (use registry_search_tools).

Behavior: read-only.

### `registry_tool_badge` (~71 tokens)

[Wicked Registry] A tool's current composite reliability score. Public and free.

Use when you want one tool's current composite score as a free badge. Not for the breakdown (use registry_tool_detail).

Behavior: read-only.

Input parameters:

- `tool_id` (string, required): The tool's Wicked Registry id.

### `registry_report_tool` (~155 tokens)

[Wicked Registry] File a complaint about a tool's reliability or behaviour. Public, rate-limited; reviewed manually, never auto-suspends.

Use when a tool misbehaved and you want to file a complaint for manual review. Not for reading scores.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `evidence` (string): Optional note or URL.
- `reason` (string, required): "downtime", "incorrect_response", "scam_or_abuse", "schema_violation" or "other".
- `reporter` (string, required): Your wallet address or another best-effort identifier.
- `tool_id` (string, required): The tool's Wicked Registry id.

### `registry_register_tool` (~240 tokens)

[Wicked Registry] Register a tool you own so it gets real synthetic checks and a live score. Get the exact message to sign from registry_onboarding_message(action=register), sign it with owner_wallet, then call this. This tool never signs.

Use when you own a tool and want it listed and monitored, with your wallet's signature over the registration message. Not for finding tools.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `category` (string, required)
- `description` (string, required)
- `endpoint_url` (string, required): Live, publicly reachable endpoint.
- `name` (string, required)
- `owner_wallet` (string, required): 0x wallet that signed the registration message.
- `protocol` (string, required): "x402", "mcp" or "rest".
- `schema_url` (string): Optional JSON Schema URL enabling the schema-conformance score.
- `signature` (string, required): 0x-prefixed ECDSA signature over the registration message.
- `timestamp` (string, required): ISO 8601 timestamp used in the signed message (within an hour of the call).

### `identity_sandbox_register` (~151 tokens)

[Wicked Identity] START HERE if you have no wallet or cannot sign messages. Returns a sandbox wallet + sandbox_token (no signing, no body). Then call identity_get_challenge and identity_submit_response with wallet + sandbox_token. Sandbox results are for trying the service: signed with a separate key (identity_jwks sandbox=true) and never reported as verified. Use a real wallet for an accountable identity. Limit: 10 per IP per hour.

Use when you have no wallet and want a sandbox identity to test the flow. Not for production verification, which needs a real wallet signature.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

### `identity_get_test_key` (~114 tokens)

[Wicked Identity] Get a free self-serve test API key (7-day expiry, 20 requests/min) to use as api_key on identity_status instead of paying via x402. Limit: 5 per IP per day.

Use when you are testing the Identity API and want a free test key for the sandbox. Not for production use.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `label` (string): Optional name for this key.

### `identity_get_nonce` (~132 tokens)

[Wicked Identity] Real-wallet path, step 1: a one-time nonce + message to sign. Every signed identity call needs a fresh nonce (single-use, 5-minute TTL). Not needed for sandbox identities.

Use when you are about to register or take a challenge and need a fresh one-time message to sign. Not for checking someone's status, which needs no signature.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `wallet` (string, required): Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register.

### `identity_register` (~167 tokens)

[Wicked Identity] Register a REAL wallet (no stake required). Needs your signature over identity_get_nonce's message; this tool never signs. Sandbox identities are registered by identity_sandbox_register instead.

Use when you want a lightweight identity record for your wallet, with a signature over the nonce message. Not for proving you are an agent (use identity_get_challenge next).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `nonce` (string, required): Nonce from a FRESH identity_get_nonce call.
- `signature` (string, required): 0x-prefixed ECDSA signature over that nonce's message.
- `wallet` (string, required): Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register.

### `identity_get_challenge` (~246 tokens)

[Wicked Identity] Request a real time-boxed liveness challenge (constrained-generation task, 30s budget). The clock starts when this returns: answer in ONE pass via identity_submit_response before `expires_at`. Real wallet: needs a fresh signed nonce (fetch + sign the nonce for the NEXT call before calling this). Sandbox: just wallet + sandbox_token.

Use when your wallet is registered and you want the time-boxed agent-liveness challenge (about 12 seconds to answer). Not for registering first (use identity_register).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `nonce` (string): Real wallet: nonce from a FRESH identity_get_nonce call. Omit for sandbox.
- `sandbox_token` (string): Sandbox identity: the sandbox_token from identity_sandbox_register. Use INSTEAD of nonce/signature.
- `signature` (string): Real wallet: 0x-prefixed ECDSA signature over that nonce's message. Omit for sandbox.
- `wallet` (string, required): Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register.

### `identity_submit_response` (~268 tokens)

[Wicked Identity] Submit your answer to a challenge; scored pass / fail / inconclusive. A pass returns a short-lived signed assertion_token (JWT) verifiable via identity_jwks. Real wallet: needs a DIFFERENT fresh nonce than identity_get_challenge used. Sandbox: wallet + sandbox_token.

Use when you have the challenge answer and want it scored and, on a pass, a signed assertion token. Not for getting the challenge (use identity_get_challenge).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `challenge_id` (string, required): The challenge_id from identity_get_challenge.
- `nonce` (string): Real wallet: nonce from a FRESH identity_get_nonce call. Omit for sandbox.
- `response_text` (string, required): Your answer exactly as the instructions specify: raw text only.
- `sandbox_token` (string): Sandbox identity: the sandbox_token from identity_sandbox_register. Use INSTEAD of nonce/signature.
- `signature` (string): Real wallet: 0x-prefixed ECDSA signature over that nonce's message. Omit for sandbox.
- `wallet` (string, required): Your 0x wallet address on Base, or the sandbox wallet from identity_sandbox_register.

### `identity_status` (~141 tokens)

[Wicked Identity] Does a wallet currently hold a valid, unexpired assertion? No signature needed. Pays via x402, or pass api_key (get one free from identity_get_test_key) / set IDENTITY_API_KEY. Sandbox wallets are never `verified`; they report sandbox: true and sandbox_verified instead.

Use when you want to know whether a wallet currently holds a valid, unexpired agent assertion. Not for becoming verified (start with identity_get_nonce).

Behavior: read-only.

Input parameters:

- `api_key` (string): Optional x-api-key, e.g. from identity_get_test_key.
- `wallet` (string, required): The 0x wallet address.

### `identity_jwks` (~92 tokens)

[Wicked Identity] Public RS256 keys to verify an assertion_token locally. Free. Set sandbox=true for the separate key set that signs sandbox assertions.

Use when you want the public keys to verify an assertion token locally. Not for checking a wallet's status (use identity_status).

Behavior: read-only.

Input parameters:

- `sandbox` (boolean): true = the sandbox key set (issuer wicked-identity-sandbox).

### `sanity_check` (~233 tokens)

[Wicked Sanity] Verify one claim before acting on it. Verdicts: supported | contradicted | unsupported | insufficient_evidence (see `data`). confidence_score is raw consistency (a "contradicted" verdict scores near 0). Policy: act on supported; treat unsupported/insufficient_evidence as unverified; reject contradicted. x402 or SANITY_API_KEY; 429 means a rate limit — see retry_after.

Use when you must verify one claim before acting on it, either against source text you supply or against live web evidence. Not for many claims at once (use sanity_check_batch).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `claim` (string, required): The single statement to verify (max 5,000 chars).
- `context`: Source text the claim(s) must be faithful to. Required for mode "grounded".
- `mode` (string): "grounded" (default; check against context) or "open" (check against live web evidence — consistency with the web, not objective truth).

### `sanity_check_batch` (~190 tokens)

[Wicked Sanity] Verify up to 50 claims against one shared context in a single call — prefer this over one sanity_check per sentence. `data` is a list in the same order as `claims`.

Use when you have a multi-sentence output to verify against one shared context in a single call (up to 50 claims). Not for a single claim (use sanity_check).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `claims` (array, required): 1-50 statements, each up to 5,000 chars.
- `context`: Source text the claim(s) must be faithful to. Required for mode "grounded".
- `mode` (string): "grounded" (default; check against context) or "open" (check against live web evidence — consistency with the web, not objective truth).

### `sanity_get_check` (~92 tokens)

[Wicked Sanity] Fetch a previously run check by its check_id (returned by sanity_check / sanity_check_batch). x402 or SANITY_API_KEY like the other Sanity calls.

Use when you want to re-read an earlier check by its check_id. Not for running a new check.

Behavior: read-only.

Input parameters:

- `check_id` (string, required): The check_id from an earlier sanity_check result.

### `memory_prepare` (~215 tokens)

Wicked Memory step 1 of every call: returns the exact `message_to_sign`. Sign it with your own wallet (EIP-191 personal_sign), then call the matching memory_* tool with the SAME arguments plus the returned timestamp, nonce and your signature. Timestamp must be within 5 minutes; nonce is single-use, so prepare again for every call.

Use when you are about to call any other memory tool and need the exact message to sign for that request. Not for the call itself.

Behavior: pure local computation, no network call, nothing is stored.

Input parameters:

- `operation` (string, required): "store", "search", "get", "update", "history", "delete" or "deletions".
- `params` (object): The arguments you will pass to the tool, by name, e.g. {"content":"...","tags":["a"]} or {"memory_id":"<uuid>"}.
- `wallet` (string, required): Your agent's 0x wallet address (memories are scoped to it).

### `memory_store` (~206 tokens)

[Wicked Memory] Store a memory (free, fair-use rate limited). A real embedding is computed at write time. Run memory_prepare with operation 'store' and these same arguments first.

Use when you want to save something for later, scoped to your wallet. Not for changing an existing memory (use memory_update).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `content` (string, required): Text to remember (max 16 KB).
- `metadata` (object): Free-form JSON object (max 8 KB).
- `nonce` (string, required): From memory_prepare (single use).
- `signature` (string, required): Your wallet's signature over memory_prepare's message_to_sign.
- `source` (string): Which agent/session wrote this.
- `tags` (array): Up to 20 short tags.
- `timestamp` (string, required): From memory_prepare.
- `wallet` (string, required): Your agent's 0x wallet address.

### `memory_search` (~304 tokens)

[Wicked Memory] Semantic search over YOUR memories only, ranked by real cosine similarity. The one metered call: free with MEMORY_API_KEY, otherwise http_status 402 with x402 v2 instructions under `payment_required` (0.001 USDC on Base) — pay, then call again with the SAME arguments (a 402 does not consume the nonce) plus payment_signature.

Use when you want to recall your memories by meaning rather than by id. Not for fetching a known id (use memory_get).

Behavior: read-only.

Input parameters:

- `as_of` (string): ISO-8601 instant; search memory as it stood then.
- `created_after` (string): ISO-8601 lower bound.
- `created_before` (string): ISO-8601 upper bound.
- `include_superseded` (boolean): Also search old, superseded versions.
- `limit` (number): 1-50, default 10.
- `nonce` (string, required): From memory_prepare (single use).
- `payment_signature` (string): x402 payment payload (base64) for the keyless path.
- `q` (string, required): What to look for, in natural language.
- `signature` (string, required): Your wallet's signature over memory_prepare's message_to_sign.
- `tags` (array): Only memories having ALL of these tags.
- `timestamp` (string, required): From memory_prepare.
- `wallet` (string, required): Your agent's 0x wallet address.

### `memory_get` (~129 tokens)

[Wicked Memory] Fetch one of your memories by id (another wallet's or a deleted id returns the same 404).

Use when you have a memory id and want its content. Not for searching by meaning (use memory_search).

Behavior: read-only.

Input parameters:

- `memory_id` (string, required): The memory's UUID.
- `nonce` (string, required): From memory_prepare (single use).
- `signature` (string, required): Your wallet's signature over memory_prepare's message_to_sign.
- `timestamp` (string, required): From memory_prepare.
- `wallet` (string, required): Your agent's 0x wallet address.

### `memory_update` (~229 tokens)

[Wicked Memory] Update without overwriting: creates a new version and closes the old one (valid_until / superseded_by). Omitted fields carry over; only the current version can be updated (409 otherwise).

Use when you want to change a memory while keeping its history (a new version supersedes the old). Not for removing it (use memory_delete).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `content` (string): New text (re-embedded). Provide at least one of content/tags/metadata/source.
- `memory_id` (string, required): UUID of the CURRENT version to supersede.
- `metadata` (object): Replacement metadata object.
- `nonce` (string, required): From memory_prepare (single use).
- `signature` (string, required): Your wallet's signature over memory_prepare's message_to_sign.
- `source` (string): New source label.
- `tags` (array): Replacement tags.
- `timestamp` (string, required): From memory_prepare.
- `wallet` (string, required): Your agent's 0x wallet address.

### `memory_history` (~141 tokens)

[Wicked Memory] Full version chain for a memory, oldest first, with valid_from / valid_until / superseded_by. Works from any version's id.

Use when you want a memory's full version chain and validity windows. Not for its current content (use memory_get).

Behavior: read-only.

Input parameters:

- `memory_id` (string, required): UUID of any version in the chain.
- `nonce` (string, required): From memory_prepare (single use).
- `signature` (string, required): Your wallet's signature over memory_prepare's message_to_sign.
- `timestamp` (string, required): From memory_prepare.
- `wallet` (string, required): Your agent's 0x wallet address.

### `memory_delete` (~203 tokens)

[Wicked Memory] PERMANENTLY hard-delete a memory (right-to-be-forgotten). Default scope "chain" removes every version; "version" only this one. Only an audit row (no content) is kept.

Use when you must permanently erase a memory (right to be forgotten). Not for correcting it (use memory_update, which keeps history).

Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.

Input parameters:

- `memory_id` (string, required): UUID of any version in the chain.
- `nonce` (string, required): From memory_prepare (single use).
- `reason` (string): Optional audit-log note (max 200 chars).
- `scope` (string): "chain" (all versions, default) or "version".
- `signature` (string, required): Your wallet's signature over memory_prepare's message_to_sign.
- `timestamp` (string, required): From memory_prepare.
- `wallet` (string, required): Your agent's 0x wallet address.

### `memory_deletions` (~119 tokens)

[Wicked Memory] Your deletion audit log (ids, times, reasons; never content).

Use when you want your audit log of deletions (ids, times, reasons, never content). Not for recovering content, which is gone.

Behavior: read-only.

Input parameters:

- `nonce` (string, required): From memory_prepare (single use).
- `signature` (string, required): Your wallet's signature over memory_prepare's message_to_sign.
- `timestamp` (string, required): From memory_prepare.
- `wallet` (string, required): Your agent's 0x wallet address.

### `paywall_demo_weather` (~134 tokens)

[x402 Paywall] Call the live demo route on the paywall gateway (GET /wickedapi/weather) to see a real x402 challenge: unpaid, it returns HTTP 402 with the decoded price, network and payTo in payment_required. A safe way to learn what a paywalled endpoint looks like before creating your own.

Use when you want to see a real x402 payment challenge from a paywalled route (price, network, payTo) without creating anything. Not for setting up your own paywall (use paywall_signup then paywall_create_route).

Behavior: read-only.

### `paywall_signup` (~148 tokens)

[x402 Paywall] Create a tenant account. Returns a Bearer apiKey ONCE — store it and set PAYWALL_API_KEY. Rate-limited to 5/hour per IP.

Use when you want a paywall tenant account and its API key (shown once). Not for managing routes of an existing tenant.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `name` (string, required): Letters, digits, space . _ - (max 100).
- `slug` (string, required): Lowercase a-z0-9 and hyphens, 2-40 chars; becomes your mount path prefix /{slug}.

### `paywall_get_tenant` (~53 tokens)

[x402 Paywall] Your tenant record (needs PAYWALL_API_KEY).

Use when you want your tenant record (name, slug, key hint). Not for route management.

Behavior: read-only.

### `paywall_list_routes` (~60 tokens)

[x402 Paywall] List your paywalled routes (needs PAYWALL_API_KEY).

Use when you want your paywalled routes and their prices. Not for earnings (use paywall_list_settlements).

Behavior: read-only.

### `paywall_create_route` (~284 tokens)

[x402 Paywall] Paywall a new endpoint with x402 pay-per-call, settled in USDC straight to payTo. With upstreamUrl, paid requests are proxied to your backend. Applies live within ~20s (needs PAYWALL_API_KEY).

Use when you want to put one HTTP endpoint behind x402 pay-per-call, paid in USDC straight to your wallet. Not for many routes at once (use paywall_import_routes).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `asset` (string): Payment token contract; defaults to USDC on the network.
- `description` (string): Up to 200 chars: letters, digits, space . _ -
- `method` (string): Default GET.
- `network` (string, required): CAIP-2 id: Base mainnet eip155:8453, Base Sepolia eip155:84532.
- `path` (string): Route path, e.g. "/weather".
- `payTo` (string, required): Your payout wallet (0x…). Settlement pays here directly; nothing is custodied.
- `price` (string, required): Decimal USD amount, e.g. "0.01" or "$0.01".
- `upstreamUrl` (string): Your https backend. Omit for the demo confirmation payload.

### `paywall_import_routes` (~114 tokens)

[x402 Paywall] Bulk upsert routes keyed on (method, path) — paywall a whole API in one call (needs PAYWALL_API_KEY).

Use when you want to paywall many routes in one call (upsert on method and path). Not for a single route (use paywall_create_route).

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `routes` (array, required): Route objects, same fields as paywall_create_route.

### `paywall_update_route` (~268 tokens)

[x402 Paywall] Partial update of a route (e.g. change price or payout wallet); applies live within ~20s (needs PAYWALL_API_KEY).

Use when you want to change a route's price, payout wallet or upstream without a redeploy. Not for creating or deleting routes.

Behavior: writes state upstream (not read-only); needs the credentials or wallet signature noted above where applicable.

Input parameters:

- `asset` (string): Payment token contract; defaults to USDC on the network.
- `description` (string): Up to 200 chars: letters, digits, space . _ -
- `id` (string, required): Route id from paywall_list_routes.
- `method` (string): Default GET.
- `network` (string): CAIP-2 id: Base mainnet eip155:8453, Base Sepolia eip155:84532.
- `path` (string): Route path, e.g. "/weather".
- `payTo` (string): Your payout wallet (0x…). Settlement pays here directly; nothing is custodied.
- `price` (string): Decimal USD amount, e.g. "0.01" or "$0.01".
- `upstreamUrl` (string): Your https backend. Omit for the demo confirmation payload.

### `paywall_delete_route` (~88 tokens)

[x402 Paywall] Remove a paywalled route; applies within ~20s (needs PAYWALL_API_KEY).

Use when you want a route removed from the paywall. Not for changing its price (use paywall_update_route).

Behavior: DESTRUCTIVE and not reversible; confirm intent before calling.

Input parameters:

- `id` (string, required): Route id from paywall_list_routes.

### `paywall_list_settlements` (~82 tokens)

[x402 Paywall] Your real on-chain USDC settlements (earnings) (needs PAYWALL_API_KEY).

Use when you want your real on-chain USDC settlements (earnings). Not for route configuration (use paywall_list_routes).

Behavior: read-only.

Input parameters:

- `limit` (number): Default 50, max 200.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/wickedapi-wicked-mcp/mcp#diagnostics

## Score history

- 2026-11-04: 73
- 2026-11-03: 72
- 2026-11-02: 72
- 2026-11-01: 71
- 2026-10-31: 71
- 2026-10-30: 70
- 2026-10-29: 70
- 2026-10-28: 69
- 2026-10-27: 69
- 2026-10-26: 69
- 2026-10-25: 68
- 2026-10-24: 68
- 2026-10-23: 66
- 2026-10-22: 65

## Common questions

### What is the Wicked MCP server?

Wicked MCP is listed in the public MCP registry as io.github.WickedAPI/wicked-mcp. Whole Wicked suite for agents: market data, SEC filings, wallet checks, risk, identity, memory. This page covers its hosted endpoint (https://mcp.wickedapi.com/mcp).

### Is the Wicked MCP server safe to use?

Wicked MCP scores 73 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Wicked MCP server expose?

Wicked MCP exposes 108 tools: kalshi_probability, kalshi_market, funding_oi, long_short_ratio, orderbook, and 103 more. Their descriptions and schemas cost roughly 19,143 tokens of context every time the server is loaded.

### Does the Wicked MCP server require authentication?

No. We connected to Wicked MCP without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Wicked MCP server still maintained?

Wicked MCP is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.wickedapi.com/mcp
- Repository: https://github.com/WickedAPI/wicked-mcp
- Website: https://mcp.wickedapi.com/
- Changelog RSS feed: https://verifymcp.io/servers/wickedapi-wicked-mcp/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/wickedapi-wicked-mcp/mcp.json
- HTML version of this page: https://verifymcp.io/servers/wickedapi-wicked-mcp/mcp
