Skip to main content
Glama

strike-mcp

Trade Strike Finance perps by talking to your AI.

MCP server Node.js 20+ License: MIT Strike Hackathon

Tools · Safety model · Setup · Configuration

strike-mcp is a Model Context Protocol server that gives Claude (and any MCP-capable agent: Claude Code, Codex, Cursor…) live access to Strike Finance: markets, funding, order books, your positions and their liquidation risk, and, when you opt in, order placement behind a preview-and-confirm guardrail.

Ask things like:

  • "How are my Strike positions doing?"

  • "Which markets have the most extreme funding right now?"

  • "How much slippage would a $5k ADA market buy take?"

  • "Long 500 ADA at 0.21 with a stop at 0.19 and take-profit at 0.25."

Why

Strike already ships skills that help coding assistants write Strike integrations. strike-mcp is the runtime piece: it lets an agent use Strike directly. Every Strike user gets an analyst and a careful trading assistant without writing code, and every agent framework that speaks MCP becomes a new entry point to Strike's order book.

Three design choices make it more than an API wrapper:

  1. Answers, not payloads. Tools return what a trader asks about: spread in bps, USD depth within 0.5/1/2% of mid, book imbalance, funding as APR with who pays whom, distance to liquidation with an ok/watch/danger flag, what each position pays or earns in funding per day, estimated market-order fills.

  2. Read-only by default, no keys required. Point it at any Cardano/Ethereum/Solana wallet address and it reads that account's positions and history from Strike's public endpoints. Trading tools don't even exist unless you enable them.

  3. Guardrails an agent can't skip. Orders are two-step. strike_preview_order validates and prices the order and returns a single-use, short-lived preview_id; strike_place_order accepts only that id, so what the user confirmed is exactly what is sent. See Safety model.

Related MCP server: Ironflow: Hyperliquid Market Data

Tools

Market data (public, no keys)

Tool

What it answers

strike_list_markets

All markets ranked by volume, 24h move, open interest or funding. Filter by category (Crypto, TradFi…).

strike_market_snapshot

One-call brief: price, range, volume, OI, funding (hourly/8h/APR, who pays), mark-vs-index premium, spread and depth.

strike_get_orderbook

Top levels plus spread, USD depth bands and imbalance.

strike_estimate_market_impact

Simulates a market order by size or USD against the live book: average fill, worst price, slippage in bps.

strike_get_candles

OHLCV with change, range, volatility and volume stats.

strike_get_recent_trades

Recent prints with taker buy/sell flow and the largest trade.

strike_get_funding

Funding for one or all markets, ranked by absolute APR (carry and crowding scan).

strike_get_sentiment

Strike's own Fear & Greed index and its components.

Account (your API wallet, or any public wallet address)

Tool

What it answers

strike_get_account

Balances, available margin, uPnL, margin ratio, withdrawable, per-market leverage.

strike_get_positions

Positions with mark, notional, PnL % of margin, distance to liquidation, risk flag, funding paid/earned per day, plus portfolio totals.

strike_get_open_orders

Open and untriggered orders, including brackets and trailing stops.

strike_get_history

Orders, fills, funding payments, closed positions or transactions, with date filters and paging.

strike_get_portfolio

Realized PnL, volume, fees, fee tier, staked-STRIKE fee discount, account-value curve.

Trading (only with STRIKE_ENABLE_TRADING=true)

Tool

What it does

strike_preview_order

Validates and prices any order type (limit, market, stop, stop-limit, take-profit, trailing stop), optionally with take-profit/stop-loss brackets. Sends nothing.

strike_preview_close_position

Reduce-only market close of all or part of a position, with fill estimate.

strike_place_order

Sends a previewed order by preview_id.

strike_cancel_order / strike_cancel_all_orders

Cancel one, or all (requires confirm: true).

strike_set_leverage

Leverage for new positions in a market.

Prompts: strike_daily_brief (what's moving, funding extremes, sentiment, your positions) and strike_risk_check (stress-test positions against an adverse move).

Safety model

strike_preview_order runs these checks before a preview_id exists:

  • Exchange rules from /v2/exchangeInfo: tick size, step size, min/max quantity, min notional, market status.

  • Market fills walked against the live book. Refused if visible liquidity can't cover the size or slippage exceeds max_slippage_pct (default 1%).

  • Margin: estimated initial margin at the market's leverage vs. available balance.

  • Notional cap: no single order above STRIKE_MAX_ORDER_NOTIONAL_USD (default $1,000). Reduce-only closes are exempt.

  • Direction sanity: brackets must sit on the right side of entry; reduce-only orders must actually reduce; crossing limits and stops that would trigger immediately are flagged.

  • Position effect: shows the position before and after.

Then strike_place_order:

  • accepts only a preview_id (not order parameters), so the agent cannot alter a confirmed order;

  • the id is single-use and expires (default 120 s);

  • market orders are refused if the mark moved more than 1% since the preview.

On top of that, Strike API wallets cannot withdraw funds: the worst case is bounded to trading.

Setup

Requires Node.js 20+.

git clone https://github.com/francbonet/strike-mcp.git && cd strike-mcp
npm install && npm run build

Choose a mode

Every variable is optional. Set only what the mode you want needs:

Mode

Variables

What you get

Market data

none

Market data tools only.

Read-only account

STRIKE_WALLET_ADDRESS

Plus positions, orders, history and portfolio of that wallet, from Strike's public endpoints. No keys.

API wallet, read-only

STRIKE_API_PUBLIC_KEY + STRIKE_API_PRIVATE_KEY

Your own account through signed requests. Still no trading tools.

Trading

API wallet + STRIKE_ENABLE_TRADING=true

Adds the trading tools. Set STRIKE_MAX_ORDER_NOTIONAL_USD to lower the $1,000 per-order cap.

The two keys go together: set both or neither. To create an API wallet:

node dist/index.js keygen   # prints a new Ed25519 key pair

Register the public key at https://app.strikefinance.org/api-keys. Try trading on STRIKE_NETWORK=testnet first.

Passing the variables

The server reads its configuration from its own process environment and does not load .env by itself. Either:

  • put the variables in your client's config, as in the examples below (env block or -e flags), or

  • keep them in a .env file (cp .env.example .env) and have Node load it with --env-file (Node 20.6+). Your keys then stay in that file instead of the client's config:

    claude mcp add strike -- node --env-file=/absolute/path/to/strike-mcp/.env /absolute/path/to/strike-mcp/dist/index.js

    In JSON configs that is "args": ["--env-file=/absolute/path/to/strike-mcp/.env", "/absolute/path/to/strike-mcp/dist/index.js"] with no env block. Use absolute paths: clients don't launch the server from the project folder.

Then register it in your client: Claude Desktop · Claude Code · Codex · Cursor · VS Code · Gemini CLI · Other clients

Claude Desktop

Add to claude_desktop_config.json (Settings → Developer → Edit config):

{
  "mcpServers": {
    "strike": {
      "command": "node",
      "args": ["/absolute/path/to/strike-mcp/dist/index.js"],
      "env": {
        "STRIKE_WALLET_ADDRESS": "addr1..."
      }
    }
  }
}

That's read-only with no keys. For trading, replace the env block with:

"env": {
  "STRIKE_API_PUBLIC_KEY": "…64 hex…",
  "STRIKE_API_PRIVATE_KEY": "…64 hex…",
  "STRIKE_ENABLE_TRADING": "true",
  "STRIKE_MAX_ORDER_NOTIONAL_USD": "250"
}

Claude Code

Read-only:

claude mcp add strike -e STRIKE_WALLET_ADDRESS=addr1... -- node /absolute/path/to/strike-mcp/dist/index.js

Trading:

claude mcp add strike -e STRIKE_API_PUBLIC_KEY=... -e STRIKE_API_PRIVATE_KEY=... -e STRIKE_ENABLE_TRADING=true -e STRIKE_MAX_ORDER_NOTIONAL_USD=250 -- node /absolute/path/to/strike-mcp/dist/index.js

By default claude mcp add registers the server only for the directory you run it in (-s local). Add -s user to make it available in all your projects, or -s project to share it through a .mcp.json in the repo (don't commit API keys there). Check it with claude mcp get strike; the tools appear in new sessions. To change the variables, claude mcp remove strike -s <scope> and add it again.

Codex

codex mcp add strike --env STRIKE_WALLET_ADDRESS=addr1... -- node /absolute/path/to/strike-mcp/dist/index.js

Or add it to ~/.codex/config.toml (shared by the Codex CLI, IDE extension and app):

[mcp_servers.strike]
command = "node"
args = ["/absolute/path/to/strike-mcp/dist/index.js"]

[mcp_servers.strike.env]
STRIKE_WALLET_ADDRESS = "addr1..."

To keep the API wallet keys out of the file, export them in your shell and forward them with env_vars = ["STRIKE_API_PUBLIC_KEY", "STRIKE_API_PRIVATE_KEY"] under [mcp_servers.strike].

Cursor

Add the same mcpServers block as for Claude Desktop to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project).

VS Code (GitHub Copilot)

Add to .vscode/mcp.json. VS Code uses servers instead of mcpServers and needs "type": "stdio":

{
  "servers": {
    "strike": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/strike-mcp/dist/index.js"],
      "env": {
        "STRIKE_WALLET_ADDRESS": "addr1..."
      }
    }
  }
}

Gemini CLI

gemini mcp add -s user -e STRIKE_WALLET_ADDRESS=addr1... strike node /absolute/path/to/strike-mcp/dist/index.js

Other clients

strike-mcp is a stdio server: the client launches it as a subprocess and talks over stdin/stdout, so there is no port or URL. Any MCP client that can run a local server works with command node, argument /absolute/path/to/strike-mcp/dist/index.js, and the environment variables below.

Clients run the built dist/index.js from that path: after pulling changes, run npm run build and restart the client; if you move the folder, update the path.

Configuration

Variable

Default

Purpose

STRIKE_NETWORK

mainnet

testnet uses api-v2-testnet.strikefinance.org.

STRIKE_WALLET_ADDRESS

–

Default account for read-only lookups.

STRIKE_BLOCKCHAIN

auto

cardano, ethereum or solana, to skip chain detection.

STRIKE_API_PUBLIC_KEY / STRIKE_API_PRIVATE_KEY

–

API wallet (Ed25519, raw hex).

STRIKE_ENABLE_TRADING

false

Registers the trading tools. Requires an API wallet.

STRIKE_MAX_ORDER_NOTIONAL_USD

1000

Per-order notional cap.

STRIKE_PREVIEW_TTL_SECONDS

120

Preview lifetime.

STRIKE_API_URL / STRIKE_MARKET_URL

derived

Override base URLs.

How it works

src/
  auth.ts       Ed25519 request signing: METHOD:PATH?QUERY:TS:NONCE:SHA256(body)
  client.ts     REST client; signs the exact bytes it sends; typed API errors
  analytics.ts  Pure decimal math: book summary, fill simulation, funding, liquidation risk, order filters
  guard.ts      Single-use, expiring preview store
  tools/        market.ts, account.ts, trading.ts (MCP tool definitions)
  server.ts     MCP server, instructions and prompts

All money math uses decimal.js; prices and sizes stay strings end to end, matching the API.

Funding: Strike settles every hour and the rate served by the API is the hourly rate (the 8-hour rate ÷ 8), so APR = rate × 24 × 365.

Tests

npm test

22 tests: signature format and verification, analytics math, the preview store, and end-to-end MCP sessions (in-memory transport) against a mock Strike API that verifies every Ed25519 signature the server sends. They cover read-only mode, keyless wallet lookups, the full preview → place flow, notional caps, bracket validation, stale-price refusal and preview reuse.

The public market endpoints were also checked against mainnet. That surfaced one difference from the published spec: /price/v2/premiumIndex returns fundingRate, not lastFundingRate. The server reads both.

License

MIT

Available Tools

13 tools
strike_estimate_market_impactEstimate market impactA
Read-only

Simulates a market order against the live book without placing anything: average fill price, worst price, slippage vs mid in bps, and whether visible liquidity covers it. Give size or notional_usd.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYes
sizeNoSize in base asset, e.g. '0.5'.
symbolYesMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.
notional_usdNoAlternative to size: USD amount to trade.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, and the description reinforces this by explicitly stating no order is placed. It also discloses what the simulation returns. It doesn't mention latency, rate limits, or book staleness, but with annotations covering the safety profile this is solid added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, with the core behavior and the safety guarantee front-loaded before the invocation hint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description enumerates the return fields, which is the key missing piece for an output-less tool. Parameter guidance is adequately covered given 75% schema coverage. Minor omissions like rate limits or book freshness keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and the description adds a meaningful constraint not encoded in the schema: 'Give size or notional_usd', clarifying these are alternative sizing inputs. The symbol description already routes to strike_list_markets, so the remaining gap is minor.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Simulates a market order against the live book') and enumerates the exact outputs: average fill price, worst price, slippage vs mid in bps, liquidity coverage. This clearly distinguishes it from the sibling read-only data tools like get_orderbook or market_snapshot, which do not simulate executions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'without placing anything' clause establishes the safe, non-trading context and 'Give size or notional_usd' directs how to invoke. However, it offers no explicit when-to-use versus alternatives (e.g., use get_orderbook for raw depth vs this for a fill simulation), leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_accountAccount & balancesA
Read-only

Balances and margin for an account: wallet balance, available balance, unrealized PnL, margin used, maintenance margin, margin ratio, withdrawable amount, and per-market leverage settings. Defaults to your own account; any public account can be looked up by wallet address.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoLook up a public account by Strike account UUID.
sub_account_idNoOne of your own subaccounts (requires the API wallet).
wallet_addressNoLook up any public account by wallet address (Cardano, Ethereum or Solana). No keys needed.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint and openWorldHint already establish that this is a safe external read, so the bar is lower. The description adds the default-to-own-account resolution behavior, but omits caching/freshness of balances, rate limits, and parameter precedence when several identifiers are passed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the resource and its scope, then the identifier behavior. The field enumeration is dense but earns its space by telling the agent what it will receive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by listing the returned metrics, which is the right call. Only the interaction between account_id, sub_account_id, and wallet_address remains underspecified for a tool with zero required parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented, including the 'no keys needed' note for wallet_address. The description reinforces the default-own-account and public-lookup semantics but adds no precedence or conflict rules beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (account balances and margin) and enumerates exactly which figures are returned, which is unusually concrete. It does not distinguish itself from near-siblings like strike_get_positions or strike_get_portfolio, so an agent must still infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: no argument defaults to your own account, and any public account is reachable via wallet address. It stops short of naming when to prefer this over strike_get_positions or strike_get_portfolio, and says nothing about what happens if multiple lookup parameters are supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_candlesCandlesA
Read-only

OHLCV candles for a market plus summary stats (change, range, close-to-close volatility, volume). Use for trend questions like 'how has ADA moved this week'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of candles (most recent).
symbolYesMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.
intervalNo1h
price_typeNolast
include_candlesNoHow many of the most recent candles to include in the output (stats always use all).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful behavioral context by enumerating the returned summary stats (change, range, close-to-close volatility, volume), which the annotations alone do not convey. It omits any pagination/limit caveats, keeping it shy of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with what the tool returns, followed by a concrete use case. No filler; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by naming the summary stats returned, and the schema covers key params. Interval and price_type semantics are the only meaningful gap, so it is nearly complete for a read-only data tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60% and documents symbol, limit, and include_candles well. The description largely restates the stats output and adds no meaning for the undocumented interval and price_type enum parameters. Baseline 3 is appropriate given the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (OHLCV candles for a market) plus what else is returned (summary stats: change, range, volatility, volume). Clear enough to distinguish from siblings like strike_get_orderbook or strike_get_recent_trades, though it does not explicitly name that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete usage example ('how has ADA moved this week') that anchors the tool to trend questions. It does not mention when to prefer strike_market_snapshot or other alternatives, so exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_fundingFunding ratesA
Read-only

Current funding for one market or all, with hourly/8h/APR rates and who pays. Without a symbol, markets are ranked by absolute APR to surface carry opportunities and crowded trades.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolNoMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Read-only safety is already covered by readOnlyHint, so the description only needs additive context. It does disclose the useful ranking-by-absolute-APR behavior when no symbol is supplied, but says nothing about pagination limits or the shape/size of the returned set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with the capability stated first and the no-symbol behavior second. Every clause adds meaning with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only funding query with no output schema, the description conveys what is returned (rate variants, payer side) and the default ranking logic. The only meaningful omission is how limit interacts with the ranked list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Coverage is 50%: the schema describes symbol well and even points to strike_list_markets, while limit is undocumented in both places. The description's 'one market or all' clarifies symbol optionality but gives no meaning to limit, so it only marginally compensates for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get funding rates) and resource (markets), and adds the concrete output content: hourly/8h/APR rates and who pays. The 'one market or all' scope also lets an agent distinguish it from snapshot or orderbook siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the conditional behavior when no symbol is given (ranking by absolute APR to surface carry opportunities), which implies a good use case. However, it never states when to prefer this over siblings like strike_market_snapshot or strike_get_sentiment, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_historyAccount historyA
Read-only

Account history: orders, fills (trades), funding payments, closed positions, or transactions (deposits, withdrawals, transfers). Newest first. Use cursor (an id from the last row) to page back.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
limitNo
sinceNoISO date/time; only records after this.
untilNoISO date/time; only records before this.
cursorNoReturn records older than this id (from a previous page).
symbolNoMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.
account_idNoLook up a public account by Strike account UUID.
sub_account_idNoOne of your own subaccounts (requires the API wallet).
wallet_addressNoLook up any public account by wallet address (Cardano, Ethereum or Solana). No keys needed.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavior — result ordering (newest first) and backward-only pagination via cursor — but says nothing about limits' effect on payload size, rate limiting, or the auth difference between account_id, sub_account_id, and wallet_address, which matters for a history endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the resource enumeration comes first, then ordering, then pagination. Every clause carries information an agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter history tool with no output schema, the description does not indicate what a returned row contains or how records differ across the five kinds, which is the main gap an agent would hit when interpreting results. It is adequate to invoke the tool correctly, but not complete enough to use the output confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already fairly high at 78%, so the baseline would be 3. The description earns the extra point by translating enum values into domain meaning — 'fills (trades)', 'positions (closed positions)', 'transactions (deposits, withdrawals, transfers)' — and by explaining that the cursor is an id taken from the last returned row.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Account history') and enumerates the five record kinds it returns, mapping each to plain language (fills = trades, positions = closed positions, transactions = deposits/withdrawals/transfers). This implicitly separates it from siblings like strike_get_open_orders and strike_get_positions, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete paging guidance ('Use cursor (an id from the last row) to page back') and sort direction, which helps invocation. But there is no explicit when-to-use vs. alternatives — nothing says to prefer strike_get_open_orders for live orders or strike_get_positions for current positions over this historical view, leaving that inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_open_ordersOpen ordersA
Read-only

Open and untriggered orders (limits, stops, take-profits, trailing stops) for an account.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNoMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.
account_idNoLook up a public account by Strike account UUID.
sub_account_idNoOne of your own subaccounts (requires the API wallet).
wallet_addressNoLook up any public account by wallet address (Cardano, Ethereum or Solana). No keys needed.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds useful scope by clarifying that only open and untriggered orders are returned and listing order types, but it does not cover pagination, filtering defaults, or authentication nuances beyond what the schema implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence that front-loads the resource and scope. Nothing is wasted, and the order-type enumeration adds useful precision without bloating.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema and full schema description coverage, the definition is minimally adequate. It does not explain return shape, pagination, or how it differs from history-oriented siblings, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four optional parameters are already documented in the schema. The description only adds the general account context and does not explain how symbol, account_id, sub_account_id, or wallet_address interact, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear resource and scope: open and untriggered orders, including limits, stops, take-profits, and trailing stops, for an account. It is specific enough for an agent to know what is returned, though it does not explicitly distinguish itself from sibling tools such as strike_get_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the phrase 'for an account' and the order-status scope, but there is no explicit guidance on when to use this tool versus alternatives like strike_get_history or account-level tools. It is adequate but leaves routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_orderbookOrder bookB
Read-only

Order book for a market: top price levels per side plus a summary (best bid/ask, spread in bps, USD depth within 0.5/1/2% of mid, and bid/ask imbalance).

ParametersJSON Schema
NameRequiredDescriptionDefault
levelsNoLevels per side to return.
symbolYesMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context by listing the returned order-book fields, but it does not mention rate limits, pagination, or other behavioral constraints beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted text. It efficiently conveys the resource and the key returned metrics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only retrieval tool with rich schema coverage and annotations covering safety, the description is largely complete. It explains the returned order-book contents, though it does not describe pagination or return-structure details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description mentions top price levels per side, which loosely maps to the levels parameter, but it does not add meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and enumerates the returned order-book contents, including top levels and summary metrics. It is clear what the tool does, but it does not explicitly distinguish itself from siblings such as strike_market_snapshot or strike_estimate_market_impact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The resource name implies order-book retrieval, but the description does not help an agent choose between this and related market-data tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_portfolioPortfolio performanceB
Read-only

Long-run performance: realized PnL, all-time volume and fees, deposits/withdrawals, current fee tier, staking fee discount (from staked STRIKE), 30-day volume, and a recent account-value curve.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoLook up a public account by Strike account UUID.
history_pointsNo
sub_account_idNoOne of your own subaccounts (requires the API wallet).
wallet_addressNoLook up any public account by wallet address (Cardano, Ethereum or Solana). No keys needed.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful detail about what portfolio data is returned, but it does not disclose permission or wallet requirements, selector behavior, or whether some fields require API-wallet context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single front-loaded sentence listing the key returned metrics, with no filler. It is somewhat dense but still readable and appropriately sized for a read-only portfolio summary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description usefully enumerates the returned performance dimensions. However, it leaves gaps around selector behavior, the role of history_points, and how the three account lookup parameters interact, which matters for a tool with four parameters and multiple lookup modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high at 75%: account_id, sub_account_id, and wallet_address have descriptions, while history_points has bounds and a default but no textual schema description. The description mentions a recent account-value curve but does not explain that history_points controls its length, so it adds only marginal parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource and scope: long-run portfolio performance with realized PnL, volume, fees, deposits/withdrawals, fee tier, staking discount, and account-value curve. It does not explicitly distinguish itself from siblings like strike_get_account or strike_get_history, but the returned data set is specific enough for an agent to understand its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives such as strike_get_account, strike_get_positions, or strike_get_history. It also does not explain when to prefer wallet_address, account_id, or sub_account_id lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_positionsPositions with riskA
Read-only

Open positions enriched with live mark price, notional, PnL as % of margin, distance to liquidation, a risk flag (ok / watch / danger), and what each position pays or earns in funding per day. Use this for 'how are my positions', 'am I close to liquidation', 'what is funding costing me'.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNoMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.
watch_pctNoFlag 'watch' when liquidation is within this % of mark.
account_idNoLook up a public account by Strike account UUID.
danger_pctNoFlag 'danger' when liquidation is within this % of mark.
sub_account_idNoOne of your own subaccounts (requires the API wallet).
wallet_addressNoLook up any public account by wallet address (Cardano, Ethereum or Solana). No keys needed.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not burdened with safety disclosure. It goes beyond them by explaining what is computed and returned (risk flag derived from thresholds, funding per day, distance to liquidation), which is real added context. It still omits auth nuances for the account lookup modes and any rate-limit or caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler: the first front-loads the return payload and the second front-loads the user intents. Every clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the heavy lifting by naming the key returned fields and the flag semantics, which is what an agent needs to decide the tool fits. Remaining gaps are scope questions: whether positions span all accounts or only the identified one, and whether results are paginated or filtered by symbol.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above baseline by explaining that the ok/watch/danger flag is the output of watch_pct and danger_pct, connecting the threshold parameters to the return value. It says nothing about how symbol, account_id, sub_account_id, and wallet_address interact or which takes precedence.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('open positions') with an explicit enumeration of the enriched fields returned: mark price, notional, PnL as % of margin, liquidation distance, risk flag, and daily funding. It is clearly distinguishable from sibling strike_get_portfolio and strike_get_account because it describes position-level risk computation rather than balances or holdings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger phrasings ('how are my positions', 'am I close to liquidation', 'what is funding costing me') that map cleanly to invocation scenarios. It does not, however, explicitly exclude or route to overlapping siblings such as strike_get_portfolio or strike_get_account when the user asks broadly about their account.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_recent_tradesRecent tradesB
Read-only

Most recent public trades in a market with a taker-flow summary (buy vs sell volume, largest trade).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolYesMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.
include_tradesNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuine context by disclosing that results include a derived taker-flow summary (buy vs sell volume, largest trade), which is not visible from the schema. It says nothing about recency window, pagination, or whether trades are real-time, so it stops short of rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the resource comes first and the distinguishing return-value detail follows. Nothing is redundant with the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only query with no output schema, the description covers purpose and the shape of the response summary, which is enough to call it. However, two of three parameters carry no explanation anywhere, and the recency/ordering semantics of 'most recent' are undefined, leaving meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% — symbol is documented in the schema (with a pointer to strike_list_markets), but limit (default 200, max 1000) and include_trades (default 20, max 100) are undocumented. The description mentions a trade summary but never explains how limit vs include_trades differ or what they control, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("most recent public trades in a market") plus the added value of a taker-flow summary. An agent can tell it apart from strike_get_orderbook or strike_get_candles by the 'executed trades with buy/sell volume' framing, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'recent trades in a market' suggests a post-trade flow lookup, but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives such as the orderbook (resting liquidity) or candles (aggregated OHLC). The agent must infer the distinction from the sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_get_sentimentMarket sentimentA
Read-only

Strike's Fear & Greed index (0 extreme fear to 100 extreme greed) computed from the exchange's own 24h tape, with momentum/breadth/volatility components. Display-only, not a risk input.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds real behavioral context by identifying the data source (the exchange's own 24h tape, not an external feed) and an explicit caveat that the value is display-only and unsuitable as a risk input. It does not mention refresh cadence or snapshot staleness, which would have pushed this to a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler: the first front-loads what the index is, its range, its derivation, and its components; the second delivers the critical usage caveat. Nothing is redundant or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, no output schema, and annotations covering the safety profile, the description supplies nearly everything needed to call and interpret the tool. The only gap is the return shape — whether callers get a bare score or an object including the named momentum/breadth/volatility components — which is left ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate at the parameter level; baseline 4 applies. The description's scale note (0–100) usefully pre-frames how to interpret the parameterless result.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (Strike's Fear & Greed index) with its exact scale (0 extreme fear to 100 extreme greed), source (the exchange's own 24h tape), and sub-components (momentum/breadth/volatility). This clearly separates it from sibling market-data tools like strike_market_snapshot or strike_get_orderbook, which return prices/depth rather than a derived sentiment score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Display-only, not a risk input' gives a meaningful when-not-to-use boundary for risk/position-sizing decisions. However, it never names an alternative tool or states the positive condition that selects this one (e.g., 'use when gauging crowd positioning vs. strike_market_snapshot for current prices'), so the routing guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_list_marketsList Strike marketsA
Read-only

Lists every Strike perpetual market with price, 24h change, volume, open interest and funding (as APR). Use it to discover symbols or rank markets (top movers, most traded, highest funding).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sort_byNoRanking. abs_* sort by magnitude, useful for 'biggest movers' or funding extremes.volume
categoryNoFilter by category, e.g. Crypto, TradFi, FX, Equity.
include_inactiveNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-data characteristics are covered structurally. The description adds return-content detail (funding quoted as APR) which is genuinely useful, but says nothing about default page size (limit=50), pagination limits, or whether inactive markets are silently excluded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is returned, then the use case. No redundancy and nothing wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description adequately covers what comes back and why to call it. The notable gap is that the undocumented limit and include_inactive parameters affect result shape and pagination, which an agent would need to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: sort_by and category are documented, but limit and include_inactive are undocumented in both schema and description. The description's ranking hints ('top movers, highest funding') loosely map to sort_by values but never explain limit or include_inactive, so it fails to compensate for the coverage gap. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Lists') and resource ('every Strike perpetual market') and enumerates the returned data (price, 24h change, volume, open interest, funding as APR). The scope word 'every' implicitly contrasts with strike_market_snapshot, so an agent can distinguish them without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage contexts: discovering symbols, ranking markets, top movers, most traded, highest funding. It never names an alternative tool or states when not to use this one, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

strike_market_snapshotMarket snapshotA
Read-only

One-call brief for a single market: price, 24h range and change, volume, open interest, funding (hourly, 8h, APR and who pays), mark vs index premium, spread and order-book depth/imbalance.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesMarket symbol, e.g. BTC-USD, ETH-USD, ADA-USD. Use strike_list_markets to discover symbols.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description's added value is the contents inventory, but it says nothing about data freshness/latency, whether values are point-in-time or rolling, failure behavior for unknown symbols, or rate limits — meaningful gaps for a market-data call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that opens with the value proposition ('one-call brief for a single market') before the field list — no filler. It is dense with domain jargon (funding APR, mark vs index premium) that a newcomer would need to decode, which keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of telling the agent what comes back, and it does so field by field. Given a one-parameter read tool, the remaining gaps (freshness, units, empty/error cases) are minor rather than disqualifying.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and the schema already fully documents it at 100% coverage, including examples and a pointer to strike_list_markets for discovery. The description adds nothing about the symbol parameter (e.g. case sensitivity, normalization, error on invalid symbol), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource ('a single market') and enumerates exactly what is bundled: price, 24h range/change, volume, open interest, funding, mark vs index premium, spread and book depth/imbalance. This is clearly an aggregate snapshot rather than a single-metric call, which implicitly separates it from siblings like strike_get_orderbook and strike_get_funding. It stops short of naming those siblings explicitly, so it is not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'one-call brief' implies this is the shortcut instead of stitching together strike_get_candles, strike_get_funding and strike_get_orderbook, but that comparison is never stated. There is no explicit when-to-use, when-not-to-use, or named alternative, so usage must be inferred from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.1.0
    • First observedstrike_estimate_market_impact
    • First observedstrike_get_account
    • First observedstrike_get_candles
    • First observedstrike_get_funding
    • First observedstrike_get_history
    • First observedstrike_get_open_orders
    • First observedstrike_get_orderbook
    • First observedstrike_get_portfolio
    • First observedstrike_get_positions
    • First observedstrike_get_recent_trades
    • First observedstrike_get_sentiment
    • First observedstrike_list_markets
    • First observedstrike_market_snapshot

TDQS

A3.7/5.0

Scored across 13 tools

Disambiguation4/5

Most tools target distinct resources or actions, but strike_market_snapshot is a 'one-call brief' that substantially overlaps with strike_get_funding, strike_get_orderbook, and price data in strike_list_markets, creating some ambiguity about when to use the aggregate versus the specific tools. Descriptions help disambiguate, so selection is mostly reliable.

Naming Consistency4/5

All tools use a consistent strike_ prefix and snake_case verb_noun pattern (strike_get_orderbook, strike_list_markets, strike_get_candles). Minor deviation: strike_market_snapshot is noun-first rather than verb-first, but overall the pattern is very predictable.

Tool Count5/5

13 tools is well within the ideal 3-15 range and each tool covers a distinct market or account data concern. The count is well-scoped for a market-data/account analytics server.

Completeness3/5

The read-only analytics surface (markets, orderbook, candles, trades, funding, sentiment, account, positions, orders, history, portfolio) is thorough. However, there are no mutating operations—no place order, cancel order, or transfer—which is a notable gap for a perpetuals trading server and leaves agents at a dead end if trading is intended.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to trade leveraged perpetual futures on Solana's Jupiter Perpetuals while providing tools for market data and technical analysis. It supports portfolio management, fee estimation, and automated position execution for SOL, ETH, and BTC using USDC collateral.
    13
    2
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Read-only Hyperliquid data for AI agents: trades, fills, candles, funding, open interest, liquidations, wallet analytics and 12 months of fill history.
    32
    51 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to securely trade on Hyperliquid perpetual exchange, including order placement, position management, market data retrieval, and vault operations via natural language.
    30 PyPI
    24
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to interact with Hyperliquid perpetual futures exchange for market analysis, account management, and risk-managed trading.
    5
    1
    MIT