MCP server for managing orders, market data, and market maker bot operations on the HyperFill trading platform
HyperFill MCP server provides 19 trading tools with mostly complete schemas and descriptions. Schemas are well-formed with proper types and parameter descriptions. Descriptions are present for all tools (80-240 chars, within baseline range). However, there are moderate gaps: (1) Several related tools lack clear differentiation (get_best_order, get_best_bid, get_best_ask are near-duplicates); (2) No output schemas documented for any tool, LLMs cannot plan downstream calls or extract chaining IDs; (3) Error handling is not visible in source, no recovery guidance; (4) Tool descriptions lack WHEN guidance (e.g., 'Use this to check funds before placing an order'); (5) Some parameters accept opaque values without constraints (e.g., marketName is free-form string with no enum or format hint); (6) No confirmation or dry-run pattern for destructive tools (place_limit_order, place_market_order, cancel_order, move_asset_from_vault); (7) Audit trail and permission checking not visible. Tool naming follows verb_noun convention well. Parameter naming is mostly consistent (marketName, baseAsset, quoteAsset) but inconsistent in a few cases (side enum uses 'bid'/'ask' instead of 'buy'/'sell', breaking chat convention). Average tool definition quality is solid but lacks production-grade polish and error recovery.
Cancel an existing order
Check available funds for a specific asset in an account
Fetch current price from oracle for a trading pair
Get the best ask (sell) order for a trading pair
Get the best bid (buy) order for a trading pair
Get the best bid or ask order for a trading pair
Get the current status of the market maker bot
No output schemas documented. LLMs cannot see what fields tools return, preventing downstream planning and breaking tool chaining. For example, place_limit_order should document it returns order_id, order_status, timestamp so agents can pass order_id to cancel_order or get_order.
Three near-duplicate tools (get_best_order, get_best_bid, get_best_ask) without clear differentiation. get_best_bid and get_best_ask are trivial specializations that waste the LLM's reasoning. The LLM must choose between three similar tools, risking confusion. Consider: keep only get_best_order with side param (current pattern), or document precise differences.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 76 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Get comprehensive market overview including order book, best bid/ask, and locked funds
Retrieve details of a specific order by ID
Retrieve the order book for a trading pair
Check the health status of the settlement system
Get list of all supported markets
Modify market maker bot configuration parameters
Move asset amount from vault to trading wallet
Place a limit order on the market
Place a market order on the market
Read data from a smart contract
Start the market maker bot with specified configuration
Stop the running market maker bot
Destructive tools lack confirmation/dry-run pattern. place_limit_order, place_market_order, cancel_order, and move_asset_from_vault are irreversible financial operations, yet no error handling, confirmation step, or recovery guidance is visible. Agents can accidentally place large orders or move funds without safeguards.
Parameter 'marketName' accepts free-form strings with no enum or validation constraint. The source shows marketName is a string but provides no list of valid values. LLMs may hallucinate market names like 'hyperfill-beta' that don't exist. Should provide enum of supported markets or call get_supported_markets first.
Tool descriptions lack WHEN guidance. E.g., 'Check available funds for a specific asset in an account' does not explain when to call this relative to place_limit_order, or what to do if funds are insufficient. Descriptions should guide LLM selection and error recovery.
Enum values use financial jargon ('bid', 'ask') instead of chat-natural language ('buy', 'sell'). Users say 'buy HBAR' not 'bid HBAR'. Agents must translate. Alternatively, accept both bid/ask and buy/sell as enum values, with internal normalization.
No visible error handling or recovery guidance in source code. If place_limit_order fails (insufficient funds, invalid price, network error), the LLM has no guidance on what to do next. Errors should be categorized as retryable, user-fixable, or fatal, with actionable next steps.
Numeric parameter 'quantity' and 'price' lack bounds or format constraints. No minimum/maximum defined in source. LLMs may pass absurd values (0, negative, 1e100) that break the API or cause financial harm.
read_contract tool description is generic ('Read data from a smart contract'). No guidance on use cases, expected return formats, or error handling. ABI is an array with no schema, LLMs cannot validate contract ABIs before calling.
No visible audit trail or permission checking in source. Trading operations (place_limit_order, cancel_order, move_asset_from_vault) do not validate caller permissions, and no logging of who did what is visible. Financial systems require audit trails for compliance.