MCP server that proxies an agent to the stellar.expert Explorer API, holding the API key server-side.
40 tools with consistent naming (verb_noun pattern: get_, list_, search_) and descriptions present for all. However, descriptions are often terse (10-50 chars), falling below the 50-200 char LLM-optimized baseline. Input schemas are visible and typed, but many lack detailed parameter descriptions. Output schemas are not documented. No error handling guidance, no recovery hints, and no actionable error messages. Tool composition is sound (each does one thing), but parameter descriptions are sparse and do not explain constraints, formats, or dependencies. Pagination is implemented (limit, cursor) but not consistently described.
Balance history for one asset the account holds (use 'XLM' or 'CODE-ISSUER').
Claimable balances receivable by an account.
Historical account stats time series.
Trade history for an account.
Estimated total value of an account (balances + valuation).
Active counter-assets traded against an asset. Include the type suffix, e.g. 'USDC-<issuer>-1'.
Descriptions are uniformly terse (10-50 chars), well below the 50-200 char LLM-optimized baseline. Examples: 'Rolling 24h network activity...' (40 chars), 'Network-wide asset aggregates.' (30 chars). LLMs need richer context to select tools correctly.
Parameter descriptions are sparse or missing. Many parameters (e.g., 'limit', 'cursor', 'order') lack explanation of valid ranges, defaults, or constraints. LLMs cannot infer whether limit=1000 is valid or if order accepts 'asc'/'desc' only.
Output schemas are not documented. Tools return dicts but LLMs cannot see what fields to expect (e.g., does get_account return 'balance', 'balances', or 'total_balance'?). This forces LLMs to guess field names and risks extraction errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
OHLCV price candles for an asset (requires the server's API key). resolution = candle width in seconds (86400 daily, 3600 hourly); frm/to = unix seconds.
Holder distribution across balance ranges.
Per-asset time series (supply, trades, price over time).
Top holders of an asset.
Metadata for one or more assets.
An account's holder rank/position for an asset (404 if it doesn't hold it).
Latest price for one or more assets (use 'XLM' for native).
Asset rating breakdown (age, activity, trustlines, liquidity, ...).
Circulating supply of an asset.
Trade history for an asset.
Assets this one trades against.
Account summary for a G-address: creation, creator, activity, assets held.
Stats for a single asset ('CODE-ISSUER'); 'XLM' for native.
A specific ledger by sequence number.
A single liquidity pool's stats (accepts the 64-char hex id).
Stats for a single market (selling/buying pair).
The latest ledger header (sequence, ts, protocol, tx/op counts).
Full network ledger-stats time series (large — keep limit small).
Transactions contained in a specific ledger (public).
List assets. sort: rating|created|payments|trades|trustlines|volume|volume7d.
List liquidity pools (sortable).
List markets (asset pairs); optional asset filter.
OHLCV candles for a market pair (requires the server's API key).
Rolling 24h network activity: accounts, operations, payments, trades, volume, XLM.
Network-wide asset aggregates.
Per-period
Pool-share holders.
Trade history for a liquidity pool.
Stellar protocol upgrade history.
The last N ledgers.
Search accounts by name, tag, domain, or partial address.
Resolve the ledger sequence at/near a unix timestamp (seconds).
Resolve the close time of a ledger sequence.
Curated TOP-50 asset list.
No error handling or recovery guidance. Tools return raw API responses without actionable error messages. If a tool fails (e.g., 'account not found'), the LLM has no guidance on what to try next (search_accounts? check address format?).
pool_history description is incomplete ('Per-period' with no object). This violates the rule that every tool must have a non-empty, complete description explaining WHAT it does, WHEN to use it, and what it returns.