Limitless MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GRAPH_API_KEY | Yes | Required to query the subgraphs via The Graph. Get one at thegraph.com/studio/apikeys | |
| LIMITLESS_API_KEY | No | Optional. Enables market name/metadata enrichment from the Limitless REST API. Without it, market browsing and search still work using public endpoints. Key format: lmts_... |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_global_statsA | Get combined protocol-wide stats across both simple and negrisk markets. Returns total markets, trades, volume, users, splits, merges, redemptions with per-type breakdown. |
| get_market_analyticsB | Get full analytics for a specific market by conditionId. Combines on-chain data (volume, trades, fees, resolution status) with market metadata (title, description, categories). Queries both subgraphs to find the market. |
| search_marketsA | Search markets by keyword or category. Returns market metadata enriched with on-chain volume and trade counts from subgraphs. |
| get_market_tradesB | Get trades for a specific market. Returns trade details with maker/taker, price, volume, and fees from on-chain data. |
| get_trader_profileA | Get a trader's profile across both simple and negrisk markets. Shows trade count, volume, fees, PnL, and first/last trade timestamps from on-chain data. |
| get_top_tradersB | Get top traders ranked by volume, trade count, or PnL. Queries both subgraphs and merges rankings. |
| get_trader_tradesA | Get a trader's recent trades across both market types, enriched with market names. |
| get_trader_positionsB | Get a trader's current positions across both market types with balances and PnL. |
| get_daily_protocol_statsA | Get daily protocol stats (volume, trades, fees, splits, merges, redemptions) across both market types as a time series. |
| get_market_daily_snapshotsB | Get daily volume, trades, and fees for a specific market over time. |
| compare_market_typesB | Side-by-side comparison of simple vs negrisk market performance. Shows volume share, trade counts, fees, and activity breakdown. |
| get_market_positionsB | Get top position holders for a specific market. Shows who holds the biggest positions and their PnL. |
| get_liquidity_eventsB | Get splits, merges, and redemptions — the liquidity lifecycle events. Filter by market or user address. |
| get_recent_activityB | Get a unified feed of all recent on-chain activity: trades, splits, merges, and redemptions across both market types with market names. |
| get_market_lifecycleA | Get the complete lifecycle of a market: creation, trading stats, splits/merges, resolution status, and redemptions — all from on-chain data with metadata. |
| get_conditionsB | Get conditions (markets that have been prepared on-chain) with resolution status. Useful for finding resolved/unresolved markets. |
| get_subgraph_schemaB | Get the GraphQL schema for a Limitless subgraph via introspection. |
| query_subgraphB | Run a raw GraphQL query against a Limitless subgraph. Escape hatch for custom queries. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Every tool has a clearly distinct purpose with no ambiguity. Tools are well-separated by scope (e.g., market-level, trader-level, protocol-wide, subgraph operations), and descriptions clearly differentiate them. For example, get_market_analytics provides comprehensive data for a single market, while get_global_stats offers aggregated protocol data, and there's no overlap in functionality.
Tool names follow a highly consistent verb_noun pattern throughout, using 'get_' for retrieval operations, 'compare_' for comparisons, 'search_' for searches, and 'query_' for raw queries. All names use snake_case uniformly, making them predictable and easy to understand, with no deviations in style or structure.
With 18 tools, the count is well-scoped for the server's purpose of providing analytics and data access for a prediction market protocol. Each tool earns its place by covering distinct aspects like market data, trader profiles, protocol stats, and subgraph operations, without feeling excessive or insufficient for the domain.
The tool surface offers complete coverage for the domain, including CRUD-like operations (e.g., get, search, query) across markets, traders, and protocol stats. It supports full lifecycle tracking (e.g., get_market_lifecycle, get_liquidity_events) and provides both aggregated and granular data, with no obvious gaps that would hinder agent workflows.